我正在使用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语句上执行任何一个条件。我很困惑这个。
答案 0 :(得分:1)
如果您不想在index
中使用UserSessionsController
方法,请在您的route.rb中写下:resources :user_session
。如果你将使用单数形式,那么路由可以映射CRUD(创建,读取,更新,删除),如果你将使用它的复数,那么它将使用你的控制器的index
方法绑定CRUD。