クリックするとajax呼び出しがトリガーされ、このリンクを別のリンクに置き換えるリンクがあります。たとえば、元のリンクは「友達を追加」です。このリンクをクリックすると、add_friendアクションにajaxリクエストが送信されます。友達が追加された場合、上記のリンクは別のリンク「リクエストのキャンセル」に置き換えられます。そのために ujs を使用します。
$("#link_for_friend").html("<%= escape_javascript(render('users/cancel_link')) %>")
コールバック (:success および :complete) を追加しようとしても機能しません。次のように :beforeSend を試してみました。
$(document).ready ->
$("#my_link").on "ajax:beforeSend", ->
alert("hello")
成功と完全なコールバックの解決策はありますか?
注:私の考えは、ajaxStartがトリガーされたときにloader.gifを表示し、少なくともajax:completeコールバックがトリガーされたときにそれを非表示にすることです。また、エラーがある場合は、ajax:errorがトリガーされたときに表示したい
アップデート
次のように、action.js.erb 内のコードを js ファイルに移動して、これを解決しようとしました。
$(document).ready ->
$(document).on("ajax:success", "a.invitation-box", ->
$("#link_for_friend").html("<%= escape_javascript(render('users/cancel_link')) %>")
).on "ajax:error", "a.invitation-box", ->
alert "error"
ただし、この方法では render('users/cancel_link') を JS ファイル内に配置することはできません