2012-05-30 10 views
7

Voglio modificare il mio routing di gioco esistente all'interno di routes.rb, ma a causa di SEO ho bisogno anche di impostare il reindirizzamento 301 per i vecchi collegamenti.Ruby on Rails - passaggio di parametri in reindirizzamento 301 in route.rb

Il mio vecchio di routing:

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

Nuovo instradamento:

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

Qui è il reindirizzamento, che ho cercato di non perdere:

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

Sopra reindirizzamento non funziona, qui è un errore:

wrong number of arguments (1 for 2) 
+0

Sei sicuro che l'errore si verifica durante il routing? – zsquare

+0

Sono sicuro che la risposta qui sotto ha funzionato alla grande. – Arti

risposta

9

provare a fare in questo modo:

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

E vedere se funziona.

+0

Ha funzionato! Grazie Maurício! – Arti

+0

Come funziona questo reindirizzamento con 301? –

+1

@ChristianFazzini Vedi http://guides.rubyonrails.org/routing.html#redirection - il reindirizzamento del routing è un 301 –