我有一个rails 3.2项目。 有一个出价对象,我希望用户能够接受此出价! 我怎样才能做到这一点? 我的第一个想法是在出价控制器上制作一个新方法,在方法中我必须更新bid的接受布尔值。这样的东西?
def accept
@bid = Bid.find(params[:id])
@bid.subject ='accept!!!!'
flash[:notice] = "Successfully destroyed post."
respond_to do |format|
format.html { redirect_to "/mybids" }
format.json { head :no_content }
end
end
答案 0 :(得分:2)
你的问题有点模糊,因为你不清楚,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}