【发布时间】:2011-11-28 23:14:56
【问题描述】:
我的路线中有这个:
resources :events do
collection do
post 'moderate'
end
end
Rake 路线告诉我:
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
现在它可以正常工作了。更新,甚至是自定义更新都是“放置”函数。
【问题讨论】:
-
有一次我开始打字,但我在写的时候就搞定了。所以我想我会为了其他人的利益而把它留在这里。从外观上看,其他人已经发现它很有用。
-
把最后三个部分放在评论里,然后是Q/A格式……不过不用关闭,是个有用的问题
标签: ruby-on-rails routes form-for custom-routes