【发布时间】:2021-09-20 05:13:13
【问题描述】:
我有两种类型的产品嵌套在相同的类别下。我设置的路线是
resources :categories, path: '/', only: [:show] do
resources :subcategories, path: '/', only: [:show] do
resources :amazon_products, path: '/', only: [:show]
resources :other_products, path: '/', only: [:show]
end
end
我之前使用这个链接访问过的
<%= link_to "View Product Page", [product.collection, product.category, product.subcategory, product], class: 'product__link' %>
在friendly_id 完成后导致类似此网址的内容
/cleansers/face-wash-and-cleansers/blemish-remedy-acne-treatment-gelee-cleanser
问题是该链接仅适用于 amazon_products,我不确定如何区分这两者。我认为问题出在我引用路径的方式上,因为当我在控制台中输入 rails 路由时,我可以看到两条不同的路径,就像这样
category_subcategory_amazon_product
GET :category_id/:subcategory_id/:id(.:format)
amazon_products#show
category_subcategory_other_product
GET /:collection_id/:category_id/:subcategory_id/:id(.:format)
other_products#show
我尝试使用链接专门引用其他产品路径
category_subcategory_other_product_path(product.category, product.subcategory, product)
但它给了我一个 ActiveRecord::RecordNotFound 因为它仍然在错误的控制器中查找
app/controllers/amazon_products_controller.rb:5:in `show'
如何让 Rails 区分这两种资源?
【问题讨论】:
标签: ruby-on-rails ruby routes friendly-id