1

我将类别控制器设置为自引用控制器,使我能够创建一系列子类别。但是,我完全不知道如何在我的应用程序中设置路由,所以我可以拥有诸如http://www.example.com/category/subcategory/product/这样的 URL

我目前将我的类别路由设置为这样

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 路由指南并在其他地方搜索解决方案后,我完全不知道从哪里开始执行这样的任务。任何帮助将非常感激!

4

1 回答 1

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

结帐活动记录关联

于 2013-08-13T20:18:27.660 回答