Ruby on rails 轨道形成动作和路线
我有一个需要参数的控制器操作,必须通过get和post访问。 使用get,它看起来像: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'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来访问它们。观察您的日志,在每个请求开始时,日志应准确记录参数的传递方式。这将帮助您了解如何在控制器中访问它们。