Rails entfernt und aktualisiert die Ansicht über Ajax

8

Wenn ich in der Vergangenheit einen Teil meiner Ansicht über Ajax aktualisieren wollte, habe ich Folgendes getan:

  1. Erstelle einen Teil des Teils, den ich aktualisieren möchte und gebe ihm eine eindeutige ID, sagen wir #tracks
  2. Erstellen Sie eine spezielle Aktion im Controller für diesen Ajax-Aufruf, sagen Sie remove_track , das alle Werte aktualisiert usw., und fügen Sie format.js hinzu.
  3. Erstellen Sie eine neue JS-Datei mit demselben Namen wie die Aktion, so dass Rails sie automatisch remove_track.js.erb aufruft, was so etwas enthält wie: $('#tracks').html("<%=j render 'cds/show_tracks' %>");
  4. Setzen Sie remote: true in der Verknüpfung, die diese Aktion aufruft.

Das alles ist in Ordnung, aber jetzt versuche ich, eine allgemeine index -Ansicht zu löschen und zu aktualisieren, indem ich die normale Methode destroy für Flexibilität benutze, was bedeutet, dass ich diese Methode entweder über Ajax oder normal aufrufen kann. Ich dachte mir, dass es so üblich ist, dass es einen besseren Weg gibt als alles oben genannte.

Ich kann die destroy-Methode aufrufen, um meine destroy.js.erb -Datei aufzurufen, indem ich sie einfach in den Controller setze:

%Vor%

und natürlich remote: true auf den Link setzen.

Was ich nicht tun kann, ist, die Ansicht zu aktualisieren. Die Tabelle, die ich aktualisieren möchte, ist in einem Div mit einer eindeutigen ID eingeschlossen. Da es sich jedoch nicht um eine partielle Tabelle handelt, verweigert sie die Aktualisierung des Inhalts. Vielleicht vermisse ich etwas.

Muss ich einen Teil erstellen und ihn mit der obigen Methode auffrischen oder gibt es einen magischeren Weg dazu (außer Turbolinks)?

Danke.

PS Außerdem habe ich gerade bemerkt, dass dies den zusätzlichen Nachteil hat, dass ich den Rest der Parameter nicht zur Destroy-Methode übergeben kann, da sie nur die Objekt-ID übergibt, die mit den normalen CRUD-Routen zerstört werden soll. Wenn ich versuche, platform(action: destroy) oder platform(method: delete) zu verwenden, bekomme ich einen Fehler:

%Vor%

Was bedeutet, dass ich eine neue Route erstellen muss, wenn ich diese Parameter übergeben möchte ...

Ein weiterer Nachteil für all das ist, dass ich die gesamte Logik für Suchen und Sortierungen, die ich in der Index-Methode habe, erneut in der Methode destroy wiederhole. Ich bin sicher, das ist definitiv nicht der Weg, es zu tun.

    
kakubei 18.07.2013, 14:57
quelle

1 Antwort

19

Danke an diese Seite:

Ссылка

Ich habe den richtigen Weg gefunden, es zu tun. So einfach und effektiv.

Hoffe das hilft jemand anderem.

    
kakubei 19.07.2013, 09:50
quelle