Как я могу поймать и перенаправить URL с конкретным параметром строки запроса в Rails 3 - PullRequest
1 голос
/ 31 марта 2012

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

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

Ответы [ 2 ]

2 голосов
/ 21 апреля 2013

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

match '/contest' => redirect { |params, request|
  if request.params.has_key?(:thanks)
     "/contests/thanks"
  else
     "/contests"
  end
}
1 голос
/ 31 марта 2012

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

конфиг / 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

НТН

...