0

我想实现这样的功能。所以我有产品控制器,它处理产品 CRUD。而且我还有类别控制器,它处理类别 CRUD。

我想要实现的是,当我浏览产品展示动作时,在浏览栏我可以看到这样的 url

www.mydomainname.com/products/category_name/product_name

这一刻我有。

www.mydomainname.com/products/city-skid-7v3

所以这意味着我需要在路由中组合 2 个控制器。有人有例子或建议吗?

4

1 回答 1

1

你应该在你的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
于 2013-06-27T09:19:43.880 回答