我有一些完美的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中,我得到了这个错误:
无效的路由名称,已经在使用:'response_summary'(ArgumentError) 您可能使用
:as
选项定义了两个具有相同名称的路由,或者您可能以相同的名称覆盖资源已经定义的路由。对于后者,您可以按照以下说明限制使用resources
创建的路由: http://guides.rubyonrails.org/routing.html#restricting-the-routes-created
在Rails 5中是否仍然要保持:as
不变?
答案 0 :(得分:0)
如果我将v1
更改为其他:as
,就像@kasperite指出的那样,路径似乎保持不变。
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"