2012-05-30 18 views
7

Quiero cambiar mi ruta de 'juego' existente en routes.rb, pero debido a la optimización de motores de búsqueda también necesito configurar 301 para los enlaces antiguos.Ruby on Rails: pasar los parámetros a la redirección 301 en routes.rb

Mi viejo enrutamiento:

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

Nueva enrutamiento:

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

Aquí se redirección que trataba de hacer:

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

Por encima de redirección no está funcionando, aquí es un error:

wrong number of arguments (1 for 2) 
+0

¿Está seguro de que se produce el error durante el enrutamiento? – zsquare

+0

Estoy seguro, la respuesta a continuación funcionó muy bien. – Arti

Respuesta

9

intentar hacer así:

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

Y ver si funciona.

+0

¡Funcionó! Gracias Maurício! – Arti

+0

¿Cómo se redirige esto con 301? –

+1

@ChristianFazzini Consulte http://guides.rubyonrails.org/routing.html#redirection - la redirección de enrutamiento es un 301 –