2012-04-15 3 views
0

У меня есть модель Категория:Рельсы маршруты для моделей с родословной

class Category < ActiveRecord::Base 
    has_many :item_categories, :dependent => :destroy 
    has_many :items, :through => :item_categories 
    has_ancestry 
end 

и модель товара:

class Item < ActiveRecord::Base 
    has_many :item_categories, :dependent => :destroy 
    has_many :categories, :through => :item_categories, :uniq => true 
end 

Я использую этот драгоценный камень - https://github.com/stefankroes/ancestry

Таким образом, URL-адреса на сайте может быть :

/category-slug/ - "categories#show" 
/category-slug/subcategory-slug 
/category-slug/subcategory-slug/subsubcategory-slug 
/category-slug/item-slug - "items#show" 
/category-slug/subcategory-slug/item-slug 
/category-slug/subcategory-slug/subsubcategory-slug/item-slug 

как будут выглядеть маршруты для этих URL-адресов? И это возможно?

ответ

0

Я предлагаю вам сделать эту проблему следующим образом:

/category1/ - "categories#show" 
/category1/category2 
/category1/category2/category3 
/category1/item - "items#show" 
/category1/category2/item 
/category1/category2/category3/item-slug 

Я бы решить эту проблему следующим маршрутам:

resources :categories do 
    resources :categroies 
    resources :items 
end 

Это дает:

category_categroie GET /categories/:category_id/categroies/:id(.:format) {:action=>"show", :controller=>"categroies"} 
    category_item GET /categories/:category_id/items/:id(.:format)  {:action=>"show", :controller=>"items"} 
      category GET /categories/:id(.:format)       {:action=>"show", :controller=>"categories"} 

Это решает шесть проблемы как:

/categories/1 
/categories/1/categories/2 
/categories/2/categories/3 
/categories/1/item/4 
/categories/2/item/5 
/categories/3/item/6 

Возможно, вы можете заставить свою программу работать с этим решением.

Смежные вопросы