Поэтому я пытаюсь заставить пользователя вернуться на страницу, на которую он смотрел, прежде чем он нажмет "войти"
Вот что я получил в своем контроллере пользовательского приложения:
def redirect_back_or_default(default)
redirect_to(session[:return_to] || default)
session[:return_to] = nil
end
И вот что у меня в контроллере сессий:
def new
@user_session = UserSession.new
session[:return_to] = request.referer
end
end
def create
@user_session = UserSession.new(params[:user_session])
if @user_session.save
flash[:notice] = "Login successful!"
redirect_back_or_default(home_path)
else
render :action => :new
end
end
В большинстве случаев это работает нормально, но если пользователь войдет в систему сразу после регистрации на сайте, он будет перенаправлен на пустую страницу. Я предполагаю, что это действие «создать», потому что это было последнее действие перед переходом на новые пользовательские сессии.
Итак, я попробовал это:
def new
@user_session = UserSession.new
unless request.referer == join_path
session[:return_to] = request.referer
end
end
И это пытается вернуть меня на страницу входа после входа в систему.
Что я действительно хотел бы сделать, так это чтобы пользователь видел свой профиль при первом входе в систему.
Это не дало бы мне идентификатор пользователя и вызвало ошибку маршрутизации
def create
@user_session = UserSession.new(params[:user_session])
if @user_session.save
flash[:notice] = "Login successful!"
redirect_back_or_default(user_path(current_user))
else
render :action => :new
end
end
Кто-нибудь проходил эту акробатику перенаправления раньше? Я не могу заставить его работать. Я использую authlogic, если это поможет.