2012-10-16 66 views
4

我們最近將我們網站上的產品名稱從'bracelets'更改爲'wristbands',並且需要保留舊的路線以實現SEO目的。Ruby on Rails重定向如何在路徑文件中傳遞參數

從本質上講,這些路線

www.hostname.com/products/bracelets/series-1/
www.hostname.com/products/bracelets/series-1/small-purple

應路線

www.hostname.com/products/wristbands/series-1/
www.hostname.com/products/wristbands/series-1/small-purple

我讀了這裏的教程http://guides.rubyonrails.org/routing.html#redirection看起來像我會使用塊語法,但我仍然不知道如何正確地執行路線。我期待着更多地瞭解路線文件,所以任何信息都會很棒。在此先感謝

match "/bracelets/:name" => redirect {|params| "/wristbands/#{params[:name]}" } 

編輯:

好,我一直在玩它了一下,這裏是它如何工作什麼我都試過

match "/products/bracelets/:name/:name2" => redirect {|params| "/products/wristbands/#{params[:name].pluralize}/#{params[:name2].pluralize}" } 

輸入網址: 本地主機:3000 /產品/手鐲/系列-1 /小紫色

輸出URL:升ocalhost:3000 /產品/腕帶
錯誤消息:無效的產品:系列1
(所以匹配工作,但重定向沒有)

如果我改變了比賽檢查PARAMS這樣的:

我得到如下:

/products/wristbands/{:name=>"series-1", :name2=>"small-purple"} 

所以看起來它是不承認的第二個斜槓「/」什麼的。有任何想法嗎?

+0

你能解釋一下它是如何與你已經嘗試過什麼工作的權利嗎? – oldergod

+0

我添加了一些細節,謝謝,有什麼想法? – ruevaughn

回答

7

我是在同樣的情況,並且對我的作品:

match "/products/bracelets/:name/:name2" => redirect {|params, request| "/products/wristbands/#{params[:name].pluralize}/#{params[:name2].pluralize}" } 

我已經通過了兩項agruments成塊。

+0

看起來我們想出了大致相同的解決方案,但是在我的情況下,我不需要傳入請求(不使用它),並且刪除名稱和名稱2上的.pluralize爲我工作。 – ruevaughn

1

爲此,您可以在滑軌5

match '/products/bracelets/:name/:name2', to: "/products/wristbands/%{name}/%{name2}" 
相關問題