Rails路由 - 范围正则表达式或重定向

dca*_*iro 1 ruby routes ruby-on-rails ruby-on-rails-3

将我的项目与第三方项目集成时,会出现疯狂冲突.

我使用模型复数作为路由名称,例如:

http://my_app/users/search (plural)
Run Code Online (Sandbox Code Playgroud)

他们正在使用

http://my_app/user/search (singular)
Run Code Online (Sandbox Code Playgroud)

这种模式用于分布在4个模型中的19条不同路线,所以我不想复制每条路线只是为了支持其他项目.

有没有办法在范围上使用正则表达式或重定向来避免代码重复?

目前我有:

...
scope 'users' do
  get 'search'
  scope 'id' do
    get ''
    get 'ping'
  end
end
...
Run Code Online (Sandbox Code Playgroud)

我希望有类似的东西:

...
scope 'user(s)?' do
  get 'search'
  scope 'id' do
    get ''
    get 'ping'
  end
end
Run Code Online (Sandbox Code Playgroud)

要么:

scope 'user', to: redirect('users')
Run Code Online (Sandbox Code Playgroud)

Zak*_*wan 5

scope ':pattern', constraints: { pattern: /user(s)?/ } do
  ...
end
Run Code Online (Sandbox Code Playgroud)

  • 无需使用括号,只需使用 `/users?/` 正则表达式即可 (2认同)