Rails Erholsame Aktionen Index Put
Ich bin häufig auf die Situation gestoßen, dass ich viele Datensätze auf einmal aktualisieren möchte - wie es GMail tut, wenn viele Nachrichten "gelesen" oder "ungelesen" gesetzt werden.
Rails unterstützt dies mit der 'update'-Methode für eine ActiveRecord-Klasse - Comment.update (Schlüssel, Werte)
Beispiel -http: //snippets.dzone.com/posts/show/749
Dies ist eine großartige Funktion, die sich jedoch nur schwer auf eine erholsame Route abbilden lässt. In gewisser Hinsicht würde ich gerne eine: Aktion für eine Sammlung sehen. In Routen könnten wir so etwas wie @ hinzufüg
map.resources :comments, :collection => { :update_many => :put }
Und dann in der Form würden Sie dies tun ...
<% form_for @comments do |f| %>
...
Dies funktioniert nicht auf vielen Ebenen. Wenn Sie dies tun:: collection => {: update_many =>: put}, senden Rails einen Beitrag an die Indexaktion (CommentsController # index). Ich möchte, dass er zur Aktion 'update_many' wechselt. Stattdessen können Sie Folgendes ausführen: collection => {: update_many =>: post}. Damit wird zumindest die richtige Aktion in der Steuerung ausgeführt.
Und anstelle von <% form for @comments ... müssen Sie Folgendes tun:
<% form_for :comments, :url => { :controller => :comments, :action => :update_many } do |f| %>
Es wird auf diese Weise OK funktionieren
Noch nicht perfekt - fühlt sich ein wenig so an, als würden wir es nicht auf die 'Rails-Art' machen. Es scheint auch so, als ob: post und: delete auch auf einem Collection-Controller sinnvoll wären.
Ich poste hier, um zu sehen, ob ich beim Einrichten etwas verpasst habe. Irgendwelche anderen Gedanken darüber, wie man eine Sammlungsebene in Ruhe durchführt: post,: put,: delete?