2012-04-15 63 views
0

我有一個模型類別:Rails的路線與祖先的模型

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 

這個網址的路線怎麼樣?這有可能嗎?

回答

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 

也許你可以讓你的程序使用這個解決方案。