2014-05-22 61 views
2

我正在爲可選參數選擇路由和默認值。鑑於路線:Rails 4強制默認路由參數被包含在生成的URL中

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 

所得URL是

/product/mykey/6 

然後該最終建立PARAMS [ENV] = 6,以及用於版本

沒有值如果刪除了默認值或make:remove()所需的env,'live'明確包含在生成的URL中。這是我現在的解決方案,但有一些Rails給我:env當我提供:版本?

回答

1

請如下

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

當你調用product_view_path沒有通過env需要env PARAM,默認值將被用於

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

你的問題是:有沒有好歹有Rails的給我:env當我提供:版本?.是的,你可以打電話product_view_path並通過version沒有通過env

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

我想你誤解我列出的問題。當env參數設置爲路由中的可選參數(default = live)時,我將默認值(env = live)提供給'link_to',env值不包含在生成的鏈接中。 –

+0

@mr_than我假設你想要實現的是:爲env設置一個默認值,如果你沒有爲env指定一個值,應該使用默認值。製作:env可選或強制不重要。說得通? – Hoa