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