Rails单个资源作为两个其他资源的嵌套资源

问题描述:

我有一个业务,一个目录和一个产品资源。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

嗯,你几乎有:

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