У меня есть страница, чей путь (например)/помещения/92, на котором я показываю ", пожалуйста, войдите в систему или зарегистрируйтесь для получения дополнительной информации", если пользователь не вошел в систему, и я хочу, чтобы вернуть эту же страницу/помещение/92 после входа пользователя в систему.
Я читал другие сообщения, и я думаю, что я понимаю, как должен работать devise stored_location_for
. В теории я мог бы добавить что-то вроде этого в ApplicationController
:
def stored_location_for(resource)
if (r = session[:return_to])
session[:return_to] = nil
r
else
super
end
end
Мой вопрос: как/где настроить сеанс [: return_to]?
Я хочу установить сеанс [: return_to] только в том случае, если пользователь нажимает [log in] или [register], но какой лучший способ сделать это?
- Украсить ссылки с помощью JavaScript? Это может сработать, но кажется жестоким.
- Установите его в контроллере помещения перед тем, как сделать страницу? Это не кажется правильным: что, если пользователь не нажимает на ссылки [войти] или [зарегистрироваться]? Затем у меня есть session [: return_to], установленное на некоторое нечетное значение, которое может меня опрокинуть, если пользователь входит в систему с другой страницы.
- Добавить строку запроса
?return_to=/premises/92
к ссылкам [log in] и [register] и обнаружить это в RegistrationsController и SessionController и использовать эту информацию для настройки сеанса [: return_to]? Кажется, что это сработает, но и тяжело.
Ни один из этих запахов не прав. Какой общепринятый способ настройки состояния для stored_location_for?