2012-05-30 13 views
7

Chcę zmienić istniejącą routing "game" wewnątrz routes.rb, ale ze względu na SEO muszę również ustawić przekierowanie 301 dla starych linków.Ruby on Rails - przekazywanie paramów do przekierowania 301 w routes.rb

Mój stary routingu:

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

Nowe trasy:

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

Tutaj jest przekierowanie, które starałem się zrobić:

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

Przede przekierowanie nie działa, tu jest błąd:

wrong number of arguments (1 for 2) 
+0

Czy na pewno błąd występuje podczas routingu? – zsquare

+0

Jestem pewien, odpowiedź poniżej działała świetnie. – Arti

Odpowiedz

9

spróbuj tak:

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

i sprawdzić, czy to działa.

+0

To zadziałało! Dzięki, Maurício! – Arti

+0

Jak to przekierowanie z 301? –

+1

@ChristianFazzini Zobacz http://guides.rubyonrails.org/routing.html#redirection - przekierowanie routingu to 301 –