こんばんは。Rails Updateについて質問があります。
現在練習で小さなサイトを作っているのですが、Ajaxを用いて呼んでいるUpdateアクションが複数回呼ばれてしまい困っています。ページ遷移後一度目は問題なく一度のみ呼ばれるのですが、以降、Updateでユーザー情報を更新する度に一回ずつUpdateが呼ばれる回数が増えていきます。
以下UpdateのコードとAjaxのコードになります。
lang
1def update 2 # short_bio = update したい情報 3 short_bio = params["short_bio"] 4 id = params.require(:id) 5 if short_bio.blank? 6 rtn_text = 'Default Text' 7 else 8 User.find_by(id: id).update(bio: short_bio) 9 rtn_text = User.find(id).bio 10 end 11 render text: rtn_text 12end
lang
1$(document).on('dblclick', '#add-bio', function(e){ 2 $(this).html("<input id ='update-bio' type='text'>"); 3 $('#add-bio').keypress(function(e){ 4 if (e.which == 13) { 5 var short_bio = ($('#update-bio').val()).trim(); 6 var update_user_id = currentpage_userid(); 7 8 $.ajax({ 9 url : '/users/' + update_user_id, 10 data : {short_bio: short_bio}, 11 type : 'PATCH', 12 dataType : 'text' 13 }).done(function(data){ 14 $('#add-bio').text(data); 15 }); 16 } 17 } 18});
下記のクエリの呼ばれる回数がどんどん増えていきます。
lang
1Started PATCH "/users/1" for 10.0.2.2 at 2014-12-25 00:04:02 +0900 2Processing by UsersController#update as HTML 3 Parameters: {"short_bio"=>"bio", "id"=>"1"} 4 User Load (0.3ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1 [["id", 1]] 5 User Load (0.3ms) SELECT "users".* FROM "users" WHERE "users"."id" = 1 LIMIT 1 6 (0.3ms) begin transaction 7 (0.4ms) commit transaction 8 User Load (0.4ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1 [["id", 1]] 9 Rendered text template (0.1ms) 10Completed 200 OK in 35ms (Views: 1.9ms | ActiveRecord: 1.6ms)
これは正しい挙動なのでしょうか?
サンタさん、いましたら助けて頂けると嬉しいです。よろしくお願いします。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2014/12/25 02:34
2014/12/25 11:52
2014/12/25 13:00
2014/12/25 13:11