我經常遇到想要一次更新很多記錄的情況 - 比如GMail設置許多消息「read」或「unread」。Rails Restful actions Index投入
Rails鼓勵這與上一個ActiveRecord類的「更新」方法 - Comment.update(鍵,值)
實施例 - http://snippets.dzone.com/posts/show/7495
這是很大的功能性,但很難映射到一個寧靜路線。從某種意義上說,我希望在集合中看到一個:put操作。在路線,我們可能會添加類似
map.resources :comments, :collection => { :update_many => :put }
然後在形式,你可以這樣做......
<% form_for @comments do |f| %>
...
這並不在許多層面上工作。如果你這樣做::collection => {:update_many =>:put},rails會向index操作(CommentsController#index)提交一個帖子,我希望它進入'update_many'操作。相反,您可以執行:collection => {:update_many =>:post}。這至少會在控制器中執行正確的操作。對於@comments
,取而代之的<%形式......你必須做到以下幾點:
<% form_for :comments, :url => { :controller => :comments, :action => :update_many } do |f| %>
它會工作確定這樣
還不夠完善 - 感覺有點像我們'不是'Rails的方式'。它也看起來像:post和delete:在收集控制器上也是有意義的。
我在這裏發帖,看看有沒有什麼我錯過了設置。關於如何安靜地完成集合級別的任何其他想法:post,:put,:delete?
我意識到我的回答只是提供了另一種解決方案來啓發你的問題的問題。我編輯它反映了這一點。 – EmFi 2009-11-20 18:05:58