我的路线中有这个:
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
现在它可以正常工作了。更新,甚至自定义更新都是“放置”功能。