2012-03-11 476 views
3

我有一個業務,一個目錄和一個產品資源。Rails單個資源作爲兩個其他資源的嵌套資源

一個企業有一個目錄和一些產品。

目錄將永遠屬於一個企業。

產品可能或可能不在目錄下。

產品表都有catalog_id和business_id。

我將如何形成的路線,這樣我可以讓沒有分類的產品,屬於一種產品目錄中,即這些URL:

  • 企業/:business_id /目錄/:catalog_id /產品/:ID
  • 企業/:business_id /產品/:ID

我已經允許後者使用這樣的:

resources :businesses do 
    resources :catalogs 

    resources :products do 
     resources :images 
     end 
    end 

如何修改它以允許第一個URL?

我知道我只是錯過了一些簡單的東西,隨時關閉它,並指出重複如果有一個。

非常感謝!

+0

如果這是業務需求,使用3級嵌套路由沒有問題,但它是[不是* rails *方法](http://guides.rubyonrails.org/routing.html#nested-resources)。你可以使用3級嵌套路由,只使用2級,並獲得更多寧靜的路由。 – 2012-06-14 03:49:42

+0

@garbagecollection介意如何做到這一點的答案?用2來實現3級嵌套路由? – yretuta 2012-06-14 04:22:27

+0

[查看我目前正在開發的這個項目的路線](https://github.com/serv/minforum)。我遇到了非常類似的問題。目前,3個模型,論壇,主題和帖子之間的關聯非常好,沒有錯誤。一個論壇有很多主題。一個主題有很多帖子。所以3級的深度會在這裏爲我工作。但是,由於2級深度處理這個問題,我沒有打算使用3級深度。 – 2012-06-14 05:18:48

回答

7

嗯,你幾乎有:

resources :businesses do 
    resources :catalogs do 
     resources :products do 
     resources :images 
     end 
    end 

    resources :products do 
     resources :images 
    end 
end 

你爲企業/產品也可以爲企業/產品目錄/產品做的一樣,沒有什麼區別,只是窩的資源。

+0

也儘量不要太深。這涵蓋在[Rails路由 - 嵌套資源] [1]的免責聲明中。[1] [1]:http://guides.rubyonrails.org/routing.html#nested-resources – engineerDave 2012-06-11 21:39:16