authlogic_oid重定向到/ user_sessions #index而不是/ user_session #create

时间:2011-03-18 23:26:16

标签: ruby-on-rails-3 authlogic authlogic-oauth

我正在使用authlogic和authlogic-oid编写rails3应用程序,以允许用户使用他们的LinkedIn帐户登录和注册。我可以调用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语句上执行任何一个条件。我很困惑这个。

1 个答案:

答案 0 :(得分:1)

如果您不想在index中使用UserSessionsController方法,请在您的route.rb中写下:resources :user_session。如果你将使用单数形式,那么路由可以映射CRUD(创建,读取,更新,删除),如果你将使用它的复数,那么它将使用你的控制器的index方法绑定CRUD。