我在Rails的一個非常標準的CRUD應用& jQuery Mobile的有兩個型號有關我的問題:如何將方法添加到更新對象集合的Rails應用程序?
class Wall < ActiveRecord::Base
has_many :problems
end
class Problem < ActiveRecord::Base
# boolean attribute is_live
belongs_to :wall
end
當顯示每個牆,我抓住每一個問題屬於該牆這is_live ==真。我現在的目標是創建一種方法,通過在is_live == true的情況下查找牆上的每個問題並更新is_live爲false來「清除」所有問題的牆。
但是,我不知道找到並更新每個適當對象的最佳做法/方法。 (這將是隻提供給那些具有「管理」權限的限制功能。)我應該:
添加的link_to該職位到新創建的WallController行動 像下面?
def clear_wall @wall = Wall.find(params[:id]) @problems = @wall.problems.where(:is_live => true) @problem.each {|p| p.update_attribute(:is_live => false) } redirect_to(walls_url) end
添加form_for提交執行相同的控制器代碼?
在Wall模型中添加一個新方法來處理這個問題?
我得太多可能這個漂亮的沉重,但我會很感激一些方向之前,我失足落下一個過於複雜的道路,導致在未來的問題。
艾瑪,指着我對update_all是超級有用的,看起來像執行更新更清潔的方式,但我實際上我們也不確定如何構建視圖來處理這個問題。 link_to與form_for,它應該是一個POST還是一個PUT等等。 – IanWhalen
@IanWhalen我已經更新了我的答案(幾次!),所以希望它對現實中的問題更有意義。 – Emma
類似'link_to「Clear Wall」,clear_wall_url(@ wall.id),:method =>:post' –