2012-05-30 3 views
7

Ich möchte meine bestehenden 'Spiel' Routing innerhalb von routes.rb ändern, aber wegen SEO muss ich auch 301 Redirect für alte Links einrichten.Ruby on Rails - Umleiten von Params in 301 Redirect in routes.rb

Mein alter Routing:

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

New Routing:

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

Hier wird die Umleitung, die ich versucht zu tun:

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

Above Umleitung nicht, hier zu arbeiten ist ein Fehler:

wrong number of arguments (1 for 2) 
+0

Sind Sie sicher, dass der Fehler beim Routing auftritt? – zsquare

+0

Ich bin mir sicher, die Antwort unten funktioniert super. – Arti

Antwort

9

Try es so machen:

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

Und sehen, ob es funktioniert.

+0

Es hat funktioniert! Danke Mauricio! – Arti

+0

Wie wird diese Umleitung mit 301? –

+1

@ChristianFazzini Siehe http://guides.rubyonrails.org/routing.html#redirection - Routing Redirect ist ein 301 –