Wenn ich einen Link habe -
%Vor%mit einer Route:
%Vor%und ein Link-Controller:
%Vor% und ajax_delete_link.js.erb
mit
Der Controller löscht den Datenbankeintrag, aktualisiert die Seite jedoch nicht. Ich versuche, die Eltern-Tabellenzeile der td zu entfernen, die das a
enthälthtml dafür ist
%Vor%Sie werden am besten folgendes tun
Struktur
%Vor% Ihre Routen müssen um objects
herum strukturiert sein. Wenn Sie versuchen, eine Aktion destroy
zu erstellen, sollten Sie in der Lage sein, eine Ajax-Anfrage an sie zu senden, damit sie ordnungsgemäß funktioniert.
Dies gibt Ihnen die Möglichkeit, Folgendes zu tun:
%Vor% Dies sendet eine Ajax ( XHR ) Anfrage an Ihre links
controller destroy
Aktion, was Sie können füllen Sie wie folgt:
-
Antwort
Die Antwort, die Sie haben, hängt direkt damit zusammen, wie Sie die mime type
verwalten
in deinem Controller.
Wenn Sie die Methode format.js
verwenden, können Sie den Befehl @instance method
in Ihrem Controller aufrufen, um das betreffende Element zu entfernen. Wenn Sie die Standard-Ajax-Rückrufe verwenden, haben Sie eine andere Herausforderung:
Dies gibt Ihnen die Möglichkeit, Folgendes zu erstellen:
%Vor% Alternativ können Sie auch die Funktion ajax
success
verwenden, um den Rückruf zu erleichtern Also:
Ich denke, bei Ihrer Frage geht es darum, wie Sie auf die Element-ID in Ihrer js.erb-Vorlage verweisen. Es ist ein Erb, also kannst du es einfach tun:
%Vor%Ich erinnere nur daran, dass Sie ein HTML-Element mit der folgenden ID benötigen:
%Vor%Wie Sie gesehen haben, wird durch das Erstellen der Ajax-Anfrage die Datenbank geändert, die Seite jedoch nicht aktualisiert. Sie müssen einen Rückruf für Ihren Ajax haben, der das DOM manipuliert, um die Tabellenzeile zu entfernen, die Sie loswerden möchten.
Rails feuert benutzerdefinierte Ereignisse ab (check-out Ссылка ), wenn Sie :remote => true
verwenden. Ich kann Callbacks anhängen.
Tags und Links ruby ruby-on-rails-3 ruby-on-rails ajax