两个具有相同作用域的示波器

时间:2018-11-29 00:08:43

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-5

我有一些完美的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不变?

1 个答案:

答案 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_pathresponse_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" 
相关问题