2012-03-30 1 views
1

У меня есть контроллер с именем PagesController, который имел действие под названием contest. В этом действии я проверил бы наличие параметра thanks и подал бы страницу благодарности, если бы он присутствовал. С тех пор я отвлек это одно действие на модель и собственный контроллер, и теперь я хочу перенаправить любые запросы для /contest?thanks в /contests/thanks. Каков наилучший способ сделать это? До сих пор я попытался следующие в моем routes.rb файл, но он не работает:Как я могу уловить и перенаправить URL-адрес с определенным параметром querystring в Rails 3

# Redirect old URLs 
match '/contest' => redirect("/contests") 
match '/contest?thanks' => redirect("/contests/thanks") 
+0

У нас есть 3-й партия ресурсы, которые уже настроены для перенаправления конкурсной формы представления в '/ конкурс thanks'?. Оглядываясь назад, 20-20 ... –

+1

Важно ли, чтобы перенаправление было из маршрутов.rb? Не можете ли вы перенаправить с контроллера? –

+0

Я был бы в порядке с этим, пока я могу его поймать где-то –

ответ

1

Вы можете перенаправить от контроллера -

конфигурации/routes.rb:

match "/contest" => "contest#old_route" 

приложение/контроллеры/contest_controller.rb:

def old_route 
    if params[:thanks] 
     redirect_to "/contests/thanks" 
    else 
     redirect_to "/contests" 
    end 
end 

НТН

+0

Я пойду с этим. Спасибо –

2

Если вы хотите иметь дело с этим полностью в routes.rb этого маршрут будет работать:

match '/contest' => redirect { |params, request| 
    if request.params.has_key?(:thanks) 
    "/contests/thanks" 
    else 
    "/contests" 
    end 
} 
+1

Это решение только спасло мою жизнь (и много часов вытягивания волос)! Tx! – thenextmogul

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

  • Нет связанных вопросов^_^