0

ユーザーがLinkedInアカウントを使用してログインおよび登録できるように、authlogicおよびauthlogic-oidを使用してrails3アプリを作成しています。LinkedIn を呼び出して認証することはできますが、問題は、呼び出しが Rails アプリに戻るときに、/user_sessions で GET を呼び出し、残りの作成を実行する代わりにインデックス コントローラーを呼び出していることです。コントローラ。コントローラーは次のとおりです。

# POST /user_sessions                                                         
def create
  @user_session = UserSession.new(params[:user_session])
  @user_session.save do |result| # <-- redirects to api.linkedin.com here
    if result
      flash[:success] = "Login successful!"
      redirect_back_or @user_session.user_path
    else
      flash.now[:error] = "Invalid username/password combination."
      @title = "Sign in"
      render 'new'
    end
  end
end

プログラムは中断したところから再開するのではなく、コントローラーでif result実行を再開するため、呼び出されることがなくなるまで、すべてがうまく機能します。indexこれを修正する方法についてのアイデアは大歓迎です。

編集:コントローラーが実行を完了していないという私の仮定は間違っていたようです。一連のデバッグ ステートメントを入力したところ、プログラムは @user_session.save の後にこのコントローラーで実行を再開しますが、if ステートメントでどちらの条件も実行していないことがわかりました。私はこれについて非常に混乱しています。

4

1 に答える 1

1

indexメソッドを使用したくない場合は、 route.rb に次のUserSessionsControllerように記述します。resources :user_session単数形を使用する場合、ルートは CRUD (作成、読み取り、更新、削除) をマップでき、複数形を使用する場合は、CRUD をindexコントローラーのメソッドにバインドします。

于 2011-03-19T09:13:59.767 に答える