Проверка подлинности Ruby on Rails, которая запоминает предыдущую страницу перед входом в систему - PullRequest
2 голосов
/ 19 марта 2012

Я ищу решение, позволяющее пользователю:

  1. Перейти на страницу
  2. Зарегистрироваться или войти в систему
  3. Перенаправитьна первую страницу

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

def after_sign_in_path_for(resource)
  session[:return_to] || root_path
end

Но это не работает, так как сессия [: return_to], похоже, не начинает работать.

Может кто-нибудь пролить свет на лучший способ сделатьэто через Devise - или предложить альтернативное решение аутентификации, которое позволяет этот тип действий.Спасибо

Ответы [ 4 ]

3 голосов
/ 20 марта 2012

Вы устанавливаете переменную session [: return_to] вручную?Попробуйте добавить это в ApplicationController

before_filter :get_referrer, :except => [:create, :update, :destroy]

def get_referrer
  session[:return_to] = request.referrer
end

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

0 голосов
/ 20 марта 2012

После входа в систему вы можете сделать это просто:

redirect_to request.referer.blank? ? root_path : :back

Нет необходимости хранить реферер в сеансе.

0 голосов
/ 20 марта 2012

Быстрый поиск в Google привел меня к этой ссылке .Кажется, достаточно недавно, оно должно по крайней мере указать вам направление, если не решить вашу проблему.

0 голосов
/ 20 марта 2012

Вы должны попытаться переопределить after_sign_in_path_for(resource) в application_controller.rb следующим образом:

private

  def after_sign_in_path_for(resource)
    stored_location_for(resource) || default
  end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...