Rails Remote-Lösch- und Update-Ansicht über Ajax

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

Erstellen Sie einen Teil aus dem Teil, den ich aktualisieren möchte, und geben Sie ihm beispielsweise eine eindeutige ID#tracksErstellen Sie eine spezielle Aktion in der Steuerung für diesen Ajax-Aufruf, sagen wirremove_track das aktualisiert alle Werte usw. und fügt hinzuformat.jsErstellen Sie eine neue JS-Datei mit demselben Namen wie die Aktion, damit Rails sie automatisch aufruftremove_track.js.erb die enthält so etwas wie:$('#tracks').html("<%=j render 'cds/show_tracks' %>");einstellenremote: true in dem Link, der diese Aktion aufruft.

All dies ist in Ordnung, aber jetzt versuche ich, eine gemeinsame zu löschen und zu aktualisierenindex Ansicht mit dem regulärendestroy Methode für Flexibilität, das heißt, ich kann diese Methode entweder über Ajax oder normal aufrufen. Ich dachte, es ist so üblich, dass es einen besseren Weg geben muss als alle oben genannten.

Ich kann die destroy-Methode bekommen, um my aufzurufendestroy.js.erb Datei durch einfaches Einfügen in den Controller:

  format.js { layout: false }

und natürlich einstellenremote: true auf den Link.

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 einen Teil handelt, wird die Aktualisierung des Inhalts verweigert. Vielleicht fehlt mir etwas.

Bin ich dazu verdammt, einen Teil erstellen und ihn mit der oben beschriebenen Methode aktualisieren zu müssen, oder gibt es eine magischere Möglichkeit, dies zu tun (außer mit Turbolinks)?

Vielen Dank.

PS Außerdem habe ich gerade bemerkt, dass dies den zusätzlichen Nachteil hat, dass ich den Rest der Parameter nicht an die destroy-Methode übergeben kann, da nur die Objekt-ID übergeben wird, die mit den regulären CRUD-Routen zerstört werden soll. Wenn ich versuche zu benutzenplatform(action: destroy) oderplatform(method: delete) Ich erhalte einen Fehler:

No route matches {:action=>"destroy", :controller=>"platforms"}

Das heißt, ich muss eine neue Route erstellen, wenn ich diese Parameter übergeben möchte ...

Ein weiterer Nachteil besteht darin, dass ich die gesamte Logik für die Suche und Sortierung, die ich in der Indexmethode habe, erneut in der Destroy-Methode durchführe. Ich bin mir sicher, dass dies so istdefinitiv nicht der Weg, es zu tun.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage