你的問題有點模糊,因爲目前還不清楚什麼bid
連接,或者什麼其他模型在您的應用程序,因爲你不說。
但是,假設這是一個拍賣網站,並且拍賣有出價。如果出價被接受
- 上拍賣的所有其他投標被破壞
- 這是公認的有它的
accepted
布爾字段設置爲true
投標。
如果這與您正在嘗試做的接近,那麼下面的代碼應該完成該操作。
在
app/controllers/bids_controller.rb
# PUT /bids/:id/accept
def BidsController < ApplicationController
def accept
@bid = Bid.find(params[:id])
@bid.update_attribute(:accepted, true)
@bid.auction.bids.each do |rejected_bid|
rejected_bid.destroy unless rejected_bid == @bid # destroys all be the accepted bid
end
flash[:notice] = "Bid accepted."
respond_to do |format|
format.html { redirect_to "/mybids" }
format.json { head :no_content }
end
end
end
然後你需要爲這個動作添加路由到您的config/routes.rb
文件。喜歡的東西...
resources :bids do
put :accept, :on => :member
end
表視圖,你會鏈接到這條路線是這樣的:
link_to "accept", accept_bid_path(@bid)
如果你從你的命令行調用rake routes
,你應該看到類似的條目這個:
accept_bid PUT /bids/:id/accept(.format) {:action=>"accept", :controller=>"bids}
是的,這就是我想要做的!我怎樣才能從視圖中調用它? – 2012-04-02 13:46:21
您必須爲自定義操作添加路由。然後,它可以作爲幫助程序使用,並且可以是'accept_bid_path(:id)',其中':id'是您接受的「Bid」對象的** id **。 – jefflunt 2012-04-02 13:57:57
我還將路由定義添加到答案中。應該是你需要的所有信息。欲瞭解更多信息,你會想看到這個路由指南:http://guides.rubyonrails.org/routing.html – jefflunt 2012-04-02 14:00:53