私は私のルートにこれを持っています:
resources :events do
collection do
post 'moderate'
end
end
レーキルートは私に教えてくれます:
moderate_events POST /events/moderate(.:format) {:controller=>"events", :action=>"moderate"}
モデレートが必要なイベントを単にリストする「管理」コントローラーがあります。
@modevents = Event.where('moderated <> 1')
これまでのところ、モデレートされていないすべてのイベントをビューに表示できます。
<%- @modevents.each do |me| -%>
Display Stuff here
<%- end -%>
モデレートされた値を更新するループにフォームを入れたいのですが、私の人生では、form_forに何を入れるべきかわかりません-私は試しました:
<%= form_for me, :url => moderate_events_path do |f| %>
<%= f.submit %>
<% end %>
返される html は次のとおりです。
<form accept-charset="UTF-8" action="/events/moderate" class="edit_event" id="edit_event_1" method="post">
<div style="margin:0;padding:0;display:inline">
<input name="utf8" type="hidden" value="✓" />
<input name="_method" type="hidden" value="put" />
「送信」ボタンをクリックすると、次のエラーが表示されます。
Couldn't find Event with ID=moderate
解決策は非常に簡単です。ルートで「post」を「put」に変更します。
resources :events do
collection do
put 'moderate'
end
end
そして今、それは正常に機能します。更新は、カスタムのものでも「プット」機能です。