具有相同 :as in rails 的两个范围

阿里安·法托什

我有一些完美运行的 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_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" 

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章