Ich habe das in meinen Routen:
resources :events do
collection do
post 'moderate'
end
Rake-Routen zeigt mir:
moderate_events POST /events/moderate(.:format) {:controller=>"events", :action=>"moderate"}
Ich habe einen "Administration" Controller, der einfach Ereignisse auflistet, die moderiert werden müssen:
@modevents = Event.where('moderated <> 1')
Bis jetzt alles gut, alle Ereignisse, die noch nicht moderiert wurden, können im View angezeigt werden:
<%- @modevents.each do |me| -%>
Zeige hier Sachen an
<%- end -%>
Ich möchte ein Formular in der Schleife platzieren, das den moderierten Wert aktualisiert, aber ich kann einfach nicht herausfinden, was ich in das form_for einfügen soll - Ich habe es versucht:
<%= form_for me, :url => moderate_events_path do |f| %>
<%= f.submit %>
<% end %>
Der zurückgegebene HTML-Code ist:
Wenn ich auf die Schaltfläche "Absenden" klicke, erhalte ich den folgenden Fehler:
Konnte Ereignis mit ID=moderate nicht finden
Die Lösung ist sehr einfach, ändern Sie in den Routen "post" zu "put":
resources :events do
collection do
put 'moderate'
end
Und jetzt funktioniert es wie es sollte. Aktualisierungen, auch benutzerdefinierte, sind "put"-Funktionen.