Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 轨道形成动作和路线_Ruby On Rails_Ruby_Routes - Fatal编程技术网

Ruby on rails 轨道形成动作和路线

Ruby on rails 轨道形成动作和路线,ruby-on-rails,ruby,routes,Ruby On Rails,Ruby,Routes,我有一个需要参数的控制器操作,必须通过get和post访问。 使用get,它看起来像: 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

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

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
如果我想让post route使用相同的操作,它应该是什么样子


PS:我使用get版本作为链接,当只添加一个产品时,需要发布路线,因为数量未知

您应该严格将其作为发布路线。如果需要,可以在未提供数量时将其默认为1。或者,当他们单击“添加一个”链接时,使用ajax以一个数量发布到路由。这样一来,它的外观和行为看起来就像是一个普通的链接,但您仍然可以通过POST更新数据,并将所有实际的GET请求保持幂等。Rails将使您很难做到这一点。从RESTful的角度来看,它也是糟糕的设计。不要使用相同的操作,并且要高兴:)好的,我明白了,那么我应该如何在控制器中发布变量?我想我可以通过params来访问它们[:]是的,你可以通过params来访问它们。观察您的日志,在每个请求开始时,日志应准确记录参数的传递方式。这将帮助您了解如何在控制器中访问它们。