设计Ruby on Rails共存的嵌套资源和单个资源操作

时间:2017-09-27 05:35:40

标签: ruby-on-rails ruby

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

resources :magazines do
  resources :ads
end

resources :ads

每个ad属于magazine,因此magazines/:magazine_id/ads绝对有意义。但是,在某些情况下,我只想列出所有ads,因此ads也有意义。请注意,magazines/:magazine_id/adsads完全不同view。同样的事情适用于其他行动。有没有人有类似的情况?在mvc

中解决它和构造代码的更好方法是什么?

1 个答案:

答案 0 :(得分:1)

您的路线应该没问题,您可以处理控制器中的差异 - 参数中存在差异::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