我经常遇到我想要一次更新许多记录的情况 – 就像GMail设置许多消息“读取”或“未读”一样.
Rails通过ActiveRecord类的’update’方法鼓励这一点 – Comment.update(keys,values)
示例 – http://snippets.dzone.com/posts/show/7495
这是很棒的功能,但很难映射到一个宁静的路线.从某种意义上说,我希望看到:对集合采取行动.在路线中,我们可能会添加类似的东西
map.resources :comments,:collection => { :update_many => :put }
然后在表格中,你会这样做……
<% form_for @comments do |f| %> ...
这在许多层面都不起作用.如果您这样做:: collection => {:update_many => :put},rails会向索引操作提交一个帖子(CommentsController #index),我希望它转到’update_many’动作.相反,你可以做:collection => {:update_many => :post}.这至少会在控制器中执行正确的操作.
并且,而不是<%表示@comments ...您必须执行以下操作:
<% form_for :comments,:url => { :controller => :comments,:action => :update_many } do |f| %>
它会以这种方式工作
仍然不完美 – 感觉有点像我们没有做’Rails方式’.它看起来也像:post,and:delete对集合控制器也有意义.
我在这里张贴,看看是否有任何我错过了设置它.关于如何安静地进行收集级别的任何其他想法:post,:put,:delete?