2012-05-30 38 views
7

我想在routes.rb中更改現有的'遊戲'路由,但由於SEO,我還需要爲舊鏈接設置301重定向。Ruby on Rails - 將參數傳入301路由中的重定向.rb

我的舊路由:

match 'games/:permalink/:id/(:page)' => 'games#show' 

新的路由:

match 'gierki/:permalink/(:page)' => 'games#show' 

這裏被重定向,我試圖做的事:

match 'games/:permalink/:id/(:page)' => redirect {|params| "/gierki/#{params[:permalink]}" + params[:page].nil? ? "" : "/#{params[:page]}" } 

以上重定向不工作,這裏是一個錯誤:

wrong number of arguments (1 for 2) 
+0

您確定路由時發生錯誤嗎? – zsquare

+0

我相信,下面的答案很好。 – Arti

回答

9

嘗試使這樣的:

match 'games/:permalink/:id/(:page)' => redirect {|params,request| "/gierki/#{params[:permalink]}" + params[:page].nil? ? "" : "/#{params[:page]}" } 

,看看它是否工作。

+0

它的工作!謝謝Maurício! – Arti

+0

這是如何重定向301? –

+1

@ChristianFazzini請參閱http://guides.rubyonrails.org/routing.html#redirection - 路由重定向是一個301 –