После успешного входа через Devise, как я могу перенаправить пользователя на страницу, на которой они были?Как вернуться на предыдущую страницу после объявления Devise
Я уже много читал и искал, и я понимаю, что мне нужно определить after_sign_in_path_for
. Я сделал это и правильно работал, с чем я столкнулся, понимает, как хранится предыдущая страница, и как правильно ее называть.
У меня есть это в мой контроллер сессий:
def after_sign_in_path_for(resource)
return request.env['omniauth.origin'] || session[:user_return_to] || root_path
end
Я также попытался
...
return request.env['omniauth.origin'] || stored_location_for(resource) || root_path
...
Я не думаю, что я понять, как сохранить местоположение, как пользователь перенаправляется вернитесь к корневому пути, если они нажмут для входа.
Знак входа может быть начат двумя способами. Либо (а) пользователь пытается получить доступ к ограниченному представлению (т. Е. before_filter :authenticate_user!...
, и в этом случае они перенаправляются и запрашиваются для входа в систему. Или (б) пользователь щелкает ссылку для знака, которая доступна на каждой странице, если пользователь не зарегистрирован в.
(а), кажется, работает. (б) нет. Я думаю, мне нужно, чтобы сохранить текущее местоположение сессии, когда пользователь нажимает на журнал в ссылке.
Как мне это сделать? Или, где является хорошим источником информации, которая помогла бы мне понять это.
Спасибо!
спасибо. Так вы бы установили это на сеанс под новым в контроллере сессий? –
неважно. Я заменил 'stored_location_for (resource)' на 'request.referrer' в методе' after_sign_in_path_for'. Это отлично работает без необходимости хранить значение в сеансе. –
Спасибо, отлично работает, и действительно полезная ссылка. Я дал ответ на клетку, когда он избил вас минутой и имеет более низкий балл. Но спасибо, отметьте отметку –