考虑这条路线设置:
resources :potatos do
get "foo", to: "foo#foo"
end
这会产生这样的节目路线:
/potatos/:id
然而,生成的foo路径不同:
/potatos/:potato_id/foo
我希望foo路由使用:id param,而不是:potato_id。这是因为我有现有的(共享)控制器逻辑,它需要:id param
根据react-numeric-input的建议,我尝试resources(:potatos, param: :id)
,但结果相同。
答案 0 :(得分:1)
因为您只是在寻找各种方法来实现这一目标。我以为我会根据评论开始回答,以显示我尝试过的各种方式。
所需格式为:
"/potatos/:id/foo" # :id refers to potato id
资源块之外
如果您在routes.rb中不需要嵌套路由,则可以实现这可以通过在资源块之外创建自定义路由来实现。
# routes.rb
# Custom routes
get '/potatos/:id/foo', to: 'foo#foo'
# Resources
resources :potatos
Rake路线显示:
GET potatos/:id/foo(.:format) foo#foo
我个人喜欢这种格式,因为它让我看到了什么是典型的资源以及我添加的内容。也就是说,我知道OP需要遵循预定义的样式指南, 需要在资源块中 (基于评论)。
资源块内部
如果您需要在资源块内部完成此操作,到目前为止,我发现在不同的控制器#动作中添加了member route,可以在一个简单的应用程序中为我工作。
resources :potatos do
member do
get "foo", to: "foo#foo"
end
end
如果您只有一名成员,则为简化版。
resources :potatos do
get "foo", to: "foo#foo", on: :member
end
在我搜索路线时都显示以下内容:
foo_potatos GET /potatos/:id/foo(.:format) foo#foo
然而, OP在尝试此格式 时收到错误,但在我的测试中它运行正常。