Я использую Devise для обработки аутентификации пользователей. Я поместил знак в другой вид контроллера. Когда пользователь входит в эту форму, я хочу перенаправить их обратно на эту страницу. Я пытался достичь этого со следующим:Переадресовать пользователя на страницу по адресу
Контроллер Применение
after_filter :store_location
def store_location
return unless request.get?
if (request.path != "https://stackoverflow.com/users/sign_in" &&
request.path != "https://stackoverflow.com/users/sign_up" &&
request.path != "https://stackoverflow.com/users/password/new" &&
request.path != "/login" &&
request.path != "/signup" &&
request.path != "https://stackoverflow.com/users/password/edit" &&
request.path != "https://stackoverflow.com/users/confirmation" &&
request.path != "https://stackoverflow.com/users/sign_out" &&
!request.xhr?) # don't store ajax calls
session[:previous_url] = request.fullpath
end
end
def after_sign_in_path_for(resource)
if request.referer == streams_url(page: params[:page])
session[:previous_url] || root_path
else
root_path
end
end
Проблема с этим кодом, когда пользователь получает доступ к ссылке с внешнего источника или типов в полный адрес страницы, он не работает. Мне нужно решение, которое работает каждый раз, когда пользователь использует эту конкретную форму для входа.
После входа в систему, для чего вы хотите перенаправить на страницу входа? –
После того, как пользователь войдет в систему из этой формы, они должны быть перенаправлены обратно на URL-адрес потока, из которого они вошли, а не корневой путь. –
try 'redirect_to: back' – forthowin