我是ruby on rails的新手。当用户点击特定产品的购买按钮时,它将获得产品的ID,然后它将重定向到另一个页面,在那里它将显示产品的所有细节(名称,描述,价格,图像等)..
我创建了一个自定义路由,如下所示:
路线
resources :products do // products is my name of the controller
collection do
get :details
end
end
查看
<%= button_to 'Add to Cart',details_products_path, class: 'btn btn-primary', method: :get %>
控制器
class ProductsController < ApplicationController
def index
@products = Product.all()
end
def details
@product = Product.find(params[:id])
end
end
注意:我还检查我的佣金路线,它显示的路径
details_products_path GET /products/details(.:format) products#details
我注意到没有id(像这样/ products / details /:id)
我也试过这个
<%= button_to 'Add to Cart',details_products_path(@products), class: 'btn btn-primary', method: :get %>
但我得到错误
“ProductsController#details中的ActiveRecord :: RecordNotFound”找不到带有'id'的产品=
def details
@product = Product.find(params[:id])
end
问题:如何将ID传递到位于我的产品控制器的详细信息方法
答案 0 :(得分:2)
如果您在网址中需要product_id
,则需要将其定义为成员路线而不是集合
resources :products do
member do
get :details
end
end
现在你会得到
GET /products/:id/details(.:format) products#details
,请参阅此处
答案 1 :(得分:1)
除非您正在使用:显示其他内容,否则这将是此类网页的正常位置。 ;)