我有一些完美运行的 rails 3 路由,用于对具有不同模块的 API 进行版本控制:
Rails.application.routes.draw do
scope module: :v2, constraints: Constraints::ApiVersion.new(versions: [2, 2.1], default: false) do
scope 'feedback/:id' do
get 'summary', controller:'summary', action: 'summary', as: 'response_summary'
end
end
scope module: :v1, constraints: Constraints::ApiVersion.new(versions: 1, default: true) do
scope 'feedback/:id' do
get 'summary', controller:'summary', action: 'summary', as: 'response_summary'
end
end
end
但是现在在 rails 5 中,我收到此错误:
Invalid route name, already in use: 'response_summary' (ArgumentError) 您可能使用该
:as
选项定义了两个同名的路由,或者您可能覆盖了已由具有相同命名的资源定义的路由。对于后者,您可以resources
按照此处的说明限制创建的路由:http : //guides.rubyonrails.org/routing.html#restricting-the-routes-created
无论如何:as
在Rails 5中保持相同吗?
正如@kasperite 指出的那样,如果我更改v1
为不同:as
的路径,则路径似乎保持不变。
response_summary GET /feedback/:id/summary(.:format) /v2/summary#summary
response_summary_v1 GET /feedback/:id/summary(.:format) /v1/summary#summary
response_summary_path
和response_summary_v1_path
路径看起来一样
2.5.1 :017 > response_summary_v1_path(5)
=> "/feedback/5/summary"
2.5.1 :018 > response_summary_path(5)
=> "/feedback/5/summary"
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句