0

我正在使用 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 语句上执行任何一个条件。我对这个很困惑。

4

1 回答 1

1

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

于 2011-03-19T09:13:59.767 回答