Ruby on rails 使用自定义控制器操作接受投标
我有一个rails 3.2项目。 有一个出价对象,我希望用户能够接受这个出价! 我该怎么做? 我的第一个想法是在bids控制器上创建一个新方法,在这个方法中,我必须更新bid的accept布尔值。类似的东西Ruby on rails 使用自定义控制器操作接受投标,ruby-on-rails,ruby-on-rails-3.2,Ruby On Rails,Ruby On Rails 3.2,我有一个rails 3.2项目。 有一个出价对象,我希望用户能够接受这个出价! 我该怎么做? 我的第一个想法是在bids控制器上创建一个新方法,在这个方法中,我必须更新bid的accept布尔值。类似的东西 def accept @bid = Bid.find(params[:id]) @bid.subject ='accept!!!!' flash[:notice] = "Successfully destroyed post." respond_to do
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
你的问题有点含糊,因为你不清楚什么是
出价
,或者你的应用程序中有什么其他型号,因为你没有说
然而,假设这是一个拍卖网站,拍卖有出价。当投标被接受时
- 拍卖会上的所有其他出价都将被销毁
- 已接受的投标将其
布尔字段设置为已接受
真
app/controllers/bids\u 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
从视图中,您将链接到此路线,如下所示:
link_to "accept", accept_bid_path(@bid)
accept_bid PUT /bids/:id/accept(.format) {:action=>"accept", :controller=>"bids}
如果从命令行调用rake routes
,您应该会看到如下条目:
link_to "accept", accept_bid_path(@bid)
accept_bid PUT /bids/:id/accept(.format) {:action=>"accept", :controller=>"bids}
对这就是我想做的!我如何从视图中调用它?您必须为自定义操作添加一个路由。然后它可以作为一个助手使用,它将是accept\u bid\u path(:id)
,其中:id
是您正在接受的bid
对象的id。我还将路由定义添加到了答案中。应该是你需要的所有信息。有关详细信息,请参阅本路由指南: