Devise Redirect: просмотр страницы A -> регистрация / вход -> перенаправление на страницу A - PullRequest
1 голос
/ 21 декабря 2011

Я пытаюсь выяснить, как вернуть пользователя на исходную страницу после того, как он зарегистрируется или войдет на сайт через Devise.

Например: пользователь просматривает листинг А. Пользователь нажимает «Зарегистрироваться», успешно регистрируется (без подтверждения). Но вместо того, чтобы перенаправляться обратно в корень, они возвращаются обратно в листинг А.

Раньше я делал это с моей доморощенной аутентификацией, сохраняя исходный URL-адрес в сеансе, затем при успешном входе в систему перенаправляйте на сохраненный URL-адрес или переходите на страницу по умолчанию, если она пуста.

Могу ли я сделать то же самое с Devise, или есть ли предпочтительный способ достижения того же?

ОТВЕТ

После того, как я поразил мой мозг в течение нескольких часов, а затем опубликовал ТАК вопрос, он почти сразу же ударил меня после отправки вопроса. Вот как я это сделал:

В моем контроллере приложений я нюхаю, чтобы увидеть, есть ли в URL параметры return_to. Если есть, я устанавливаю это в сессии.

Затем я перезаписываю after_sign_in_path_for в контроллере приложения, чтобы перенаправить на сохраненное значение сеанса или путь root_path.

Вот (соответствующие части) мой application_controller.rb:

class ApplicationController < ActionController::Base

  before_filter :check_for_manual_return

  def check_for_manual_return
    session[:return_to] = params[:return_to] if !params[:return_to].nil?  
  end

  def after_sign_in_path_for(resource)
    return session[:return_to] || root_path
  end   
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...