Переадресация Rails с новыми пользователями и логинами - PullRequest
1 голос
/ 27 мая 2010

Поэтому я пытаюсь заставить пользователя вернуться на страницу, на которую он смотрел, прежде чем он нажмет "войти"

Вот что я получил в своем контроллере пользовательского приложения:

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, если это поможет.

1 Ответ

0 голосов
/ 28 мая 2010

Нашли отличное решение по адресу: http://ethilien.net/archives/better-redirects-in-rails/

...