【发布时间】:2015-05-18 21:57:26
【问题描述】:
我有一个这样的嵌套资源:
resource :user, controller: :users do
# code ...
resources :profile, controller: :profiles, shallow: true do
# code ...
collection do
get :featured
end
end
end
焦点是profiles的featured动作。
此生成的 URL 是 /user/profile/featured。我不明白这一点,因为我指定了shallow: true,但它仍然嵌套在user/ 下。我希望 URL 改为 /profile/featured。
如果我只是做get :featured 而不是将它放入集合中,我会得到/profile/:id/featured,这也不是我想要的。
【问题讨论】:
-
resource :user, controller: :users, shallow: true -
我刚试过;没用 -
shallow不是用于子/嵌套资源(即您不在父级中使用它,而是在子级中使用它)。 -
如果您希望 URL 为
/profile/featured,为什么要将您的个人资料和特色资源嵌套在用户内部?通过嵌套,您是在告诉 Rails 您希望在用户的上下文中获取这些资源。 -
大多数情况下,它会是
/user/profile/...,但对于这个特定的路线,我更喜欢它是/profile/featured。这不是什么大问题(我可以简单地为它制作一个自定义路由),但我想知道为什么这里没有应用浅层路由。 -
我认为如果我提到我在这里进行实验是有意义的,并且上面的代码不是我的真实代码(我将使用
shallow do,或者就像我说的那样,使用自定义路由)。
标签: ruby-on-rails routes