2
我按照以下方式在我的路線中重定向鏈接。Rails路線在重定向中內插可選參數
match '(:locale)/products', to: redirect('%{locale}/products/new', status: 301), via: 'get'
這裏參數:locale
是可選的。
所以,如果當PARAM :locale
是空的時,收到錯誤消息:
key{locale} not found
一種可能的解決方法是在重定向時使用塊代替,哪裏可以例如添加自定義邏輯
match '(:locale)/products', to: redirect{ |params|"#{params[:locale]}/products/new"}, status: 301, via: 'get'
但是有沒有什麼辦法可以在不使用塊的情況下以更短的形式插入可選參數?
不,它不。如果我設置了約束,那麼簡單的路由將不會匹配,並且顯然不會產生錯誤。這樣,我將不得不做2條路線,其中一條用於缺少語言環境,另一條用於提供。這樣,我們根本不會利用可選參數。 –
對。 ':defaults'解決了這個問題。如果我們根本不需要設置區域設置,它也可以設置爲'{:locale =>「」}'。公認。謝謝。 –