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