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か? したがって、次の URL を取得します。

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 に答える