Wie können Schienen nach einem Ajax-Aufruf eine Tabellenzeile entfernen, um sie zu löschen?

8

Wenn ich einen Link habe -

%Vor%

mit einer Route:

%Vor%

und ein Link-Controller:

%Vor%

und ajax_delete_link.js.erb mit

%Vor%

Der Controller löscht den Datenbankeintrag, aktualisiert die Seite jedoch nicht. Ich versuche, die Eltern-Tabellenzeile der td zu entfernen, die das a

enthält

html dafür ist

%Vor%     
Michael Durrant 07.08.2014, 03:15
quelle

4 Antworten

3

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:

%Vor%

-

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:

%Vor%

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:

%Vor%     
Richard Peck 07.08.2014 10:33
quelle
1

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%     
Tiago Farias 07.08.2014 04:53
quelle
0

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.

    
Jade McGough 07.08.2014 04:04
quelle
0
%Vor% %Vor%

Achten Sie darauf, format.js in Ihrer Controller-Methode für das Löschen

zu verwenden     
Fazley 23.07.2017 20:14
quelle