我想实现这样的功能。所以我有产品控制器,它处理产品 CRUD。而且我还有类别控制器,它处理类别 CRUD。
我想要实现的是,当我浏览产品展示动作时,在浏览栏我可以看到这样的 url
www.mydomainname.com/products/category_name/product_name
这一刻我有。
www.mydomainname.com/products/city-skid-7v3
所以这意味着我需要在路由中组合 2 个控制器。有人有例子或建议吗?
我想实现这样的功能。所以我有产品控制器,它处理产品 CRUD。而且我还有类别控制器,它处理类别 CRUD。
我想要实现的是,当我浏览产品展示动作时,在浏览栏我可以看到这样的 url
www.mydomainname.com/products/category_name/product_name
这一刻我有。
www.mydomainname.com/products/city-skid-7v3
所以这意味着我需要在路由中组合 2 个控制器。有人有例子或建议吗?
你应该在你的routes.rb
:
namespace :products do
resources :categories do
resources :products
end
# to index products without category:
resources :products, only: :index
end
然后,您应该更改views/controllers
使用路线的所有地方。例如,如果您有
link_to product.name, product
您应该将其替换为:
link_to product.name, [:products, product.category, product]
因为现在链接到产品时,您还需要指定类别 url 段。
在您的products#index
中,您现在可以category_id
分别检查是否提供和过滤产品:
scope = if params[:category_id]
Category.find_by_permalink!(params[:category_id])
else
Product
end
@products = scope.all # add your other scopes here