Rails 4强制默认路由参数包含在生成的URL中

时间:2014-05-22 13:14:28

标签: ruby-on-rails ruby ruby-on-rails-4 rails-routing

我正在为可选参数的路由和默认值进行摔跤。鉴于路线:

    get '/product/:key(/:env(/:version))', to: 'delivery#widget_view',
    defaults: { env: 'live' }, as: :product_view

我理解如果我给它一个版本,那么我也应该给它一个 env 。当我

link_to 'view it', key: 'mykey', env: 'live', version: 6

结果网址为

/product/mykey/6

然后最终创建 params [env] = 6 版本

没有值

如果我删除默认设置或make:env需要删除(),' live'明确包含在生成的URL中。这是我现在的解决方案,但有些东西让Rails给我:env当我提供:版本?

1 个答案:

答案 0 :(得分:1)

需要env param,如下所示

get '/product/:key/:env(/:version)', to: 'delivery#widget_view',
  defaults: { env: 'live' }, as: :product_view

如果在未通过product_view_path的情况下致电env,则会使用默认值

product_view_path('mykey') => '/product/mykey/live'

你的问题是:Rails有什么东西给我:env当我提供:版本?是的,您可以致电product_view_path并通过version而不通过env

product_view_path('mykey', version: 6) => '/product/mykey/live/6'