1

だから私は、ユーザーが「ログイン」をクリックする前に見ていたページに戻ろうとしています

これは、ユーザー アプリケーション コントローラーで取得したものです。

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

そして、これはログイン後にログインページに戻ろうとします.

私が本当にやりたいことは、ユーザーが初めてログインしたときに自分のプロファイルを表示することです。

これではユーザー ID が得られず、ルーティング エラーが発生しました

  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を使用しています。

4

1 に答える 1

0

http://ethilien.net/archives/better-redirects-in-rails/で優れたソリューションを見つけました。

于 2010-05-27T21:39:34.107 に答える