Rails形成行动和路线

时间:2014-03-20 17:13:41

标签: ruby-on-rails ruby routes

我有一个需要参数的控制器动作,必须通过get和post访问。 看起来像是:

get 'cart/add:id,:qty' => 'cart#add', as: :addToCart

控制器操作是:

def add
 product = Product.find(params[:id])

 if ::AddToCart.new(@cart, product, params[:qty]).execute
   flash[:succes] = "Product(s) added."
 else
   flash[:failure] = "Product cannot be added."
 end  

 redirect_to request.referer
end

如果我希望它使用相同的动作,后期路线应该如何。

PS:当只添加一个产品时,我将get版本用作link_to,因为数量未知,所以需要发布路径

1 个答案:

答案 0 :(得分:0)

你应该严格把它作为一个后期路线。如果需要,可以在未提供数量时将数量默认为1。或者,当他们点击&#34时,使用ajax发布到数量为1的路线;添加一个"链接。这样它看起来就像是一个常规的link_to类型的链接,但是你仍然只能通过POST更新数据并让你所有的实际GET请求都是幂等的。