我有一个类别控制器设置作为自引用控制器,使我能够创建一系列子类别。但是,我完全不知道如何在我的应用程序中设置路由,所以我可以使用http://www.example.com/category/subcategory/product/等网址
我目前将我的类别路由设置为
resources :categories, except: :index, :path => '/'
我的模型设置为
class Category < ActiveRecord::Base
has_many :subcategories, :class_name => "Category", :foreign_key => "parent_id", :dependent => :destroy
belongs_to :parent_category, :class_name => "Category", :foreign_key=>"parent_id"
end
然而,在阅读了Rails指南以便在其他地方寻找解决方案之后,我完全难以接受这样的任务。任何帮助将不胜感激!
答案 0 :(得分:2)
要拥有嵌套路由,您需要将嵌套路由包装在do end
块中:
resources :categories, except: :index, :path => '/' do
resources :subcategories do
resources :products
end
end
对于自引用部分,为什么不创建subcategories
控制器和模型并将其与category
模型相关联?所以你得到以下网址:
http://example.com/categories/1/subcategories/3/products
使用单独的模型可以访问一些有用的方法:
class Category < ActiveRecord::Base
has_many :subcategories
class Subcategory < ActiveRecord::Base
belongs_to :category
现在,您可以看到属于某个类别的所有子类别,子类别所属的类别等等。
Category.find(1).subcategories
Subcategory.find(1).category