2017-09-27 95 views
0

我有一个用户案例,其中嵌套资源和个人资源都有意义。我如何设计路径和代码结构来反映这一点?例如:为Ruby on Rails共存设计嵌套资源和个人资源操作

resources :magazines do 
    resources :ads 
end 

resources :ads 

每个ad属于magazine,所以magazines/:magazine_id/ads绝对是有意义的。但是,在某些情况下,我只想列出所有ads,因此ads也是有意义的。请注意,magazines/:magazine_id/adsads有完全不同的view。同样的事情适用于其他行为。有没有人有类似的情况?有什么更好的方法来解决它,并在mvc结构代码?

+0

这听起来像magazine_给我的简单_filter。 – spickermann

+0

@spickermann,但观点和行动是完全不同的。所以我不能简单地过滤它。 – new2cpp

+0

您能否举例说明这些操作和观点会有何不同? – spickermann

回答

0

您的路线应该没问题,您可以在控制器中处理差异 - 参数中会有差异::magazine_id将会存在或不存在。

如果你想控制器完全分离,你可以使用你的路由module:

resources :magazines do 
    resources :ads, module: 'nested' 
end 
resources :ads 

第一个将指向Nested::AdsController,第二个AdsController

还是其他方式

resources :magazines do 
    resources :ads 
end 
resources :ads, module: 'unnested' 

第一个指向AdsController,第二个指向Unnested::AdsController