2012-05-30 7 views
7

Я хочу изменить свою существующую маршрутную маршрутизацию внутри маршрутов.rb, но из-за SEO мне также нужно настроить 301 перенаправление для старых ссылок.Ruby on Rails - прохождение параметров в 301 redirect в routes.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

Это сработало! Спасибо Маурисио! – Arti

+0

Как это перенаправить с 301? –

+1

@ChristianFazzini См. Http://guides.rubyonrails.org/routing.html#redirection - перенаправление маршрутизации - это 301 –

Смежные вопросы