【发布时间】:2017-04-16 17:06:10
【问题描述】:
考虑这个路线设置:
resources :potatos do
get "foo", to: "foo#foo"
end
这会生成这样的显示路线:
/potatos/:id
但是生成的 foo 路由不同:
/potatos/:potato_id/foo
我希望 foo 路由使用 :id 参数,而不是 :potato_id。这是因为我有现有的(共享的)控制器逻辑,它需要一个 :id 参数
根据Naming params of nested routes 的建议,我尝试了resources(:potatos, param: :id),但结果相同。
【问题讨论】:
-
不相关,但这不是“potato”的复数形式。
-
为什么不像
get '/potatos/:id/foo', to: 'foo#foo'和resources :potatos这样将get路由从嵌套资源中拉出来 -
@user3366016 这就是我作为解决方法所做的,但我正在钓鱼看看是否还有其他方法
-
@maxpleaner 是有道理的。我认为这应该可以使它保持嵌套并且更清洁。不过,我倾向于将这种类型的东西从嵌套路由中拉出来。
resources :potatos do get "foo", to: "foo#foo", on: :member end -
@user3366016 得到
undefined local variable or method 'on' for #<ActionDispatch::Routing::Mapper。我个人可能也更喜欢避免嵌套路由,但我必须遵循我团队的格言。
标签: ruby-on-rails ruby