Ajax: Erfolg und Ajax: vollständiger Rückruf funktionieren nicht, wenn UJS in Rails verwendet wird

Ich habe einen Link, der, wenn ich darauf klicke, einen Ajax-Aufruf auslöst und diesen dann durch einen anderen Link ersetzt. Der ursprüngliche Link lautet beispielsweise "Freund hinzufügen". Wenn ich auf diesen Link klicke, wird eine Ajax-Anfrage an die Aktion "add_friend" gesendet Wenn der Freund hinzugefügt wird, wird der obige Link durch einen anderen Link "Anfrage abbrechen" ersetzt. Ich benutze dafür UJS:

$("#link_for_friend").html("<%= escape_javascript(render('users/cancel_link')) %>")

Wenn ich versuche, einen Rückruf hinzuzufügen (: success und: complete), funktioniert es nicht. Ich habe versucht, mit: beforeSend wie folgt zu arbeiten:

$(document).ready ->
  $("#my_link").on "ajax:beforeSend", ->
    alert("hello")

gibt es eine lösung für erfolg und vollständigen rückruf?

Hinweis: Meine Idee ist es, ein loader.gif anzuzeigen, wenn ajaxStart ausgelöst wird, und es dann auszublenden, wenn ajax: complete callback ausgelöst wird, auch wenn ein Fehler vorliegt. Ich möchte es anzeigen, wenn ajax: error ausgelöst wird

Aktualisieren

Ich habe versucht, dieses Problem zu lösen, indem ich den Code in action.js.erb in die js-Datei verschoben habe:

  $(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"

Auf diese Weise ist es jedoch nicht möglich, Rendering ('users / cancel_link') in eine JS-Datei einzufügen

Antworten auf die Frage(3)

Ihre Antwort auf die Frage