2013-04-14 78 views
0

我正在处理应用程序,并在登录到应用程序时遇到了一些麻烦。当我提交的用户名和密码的应用程序,我得到:未定义的方法'api_key'为零:nilClass

undefined method 'api_key' for nil:NilClass

app/controllers/user_sessions_controller.rb:51:in 'create'

的创建方法如下:

def create 
user = User.find_by_username(params[:username]) 

if (user && user.authenticate(params[:password])) 
    render json: {logged_in: true, access_token: @user.api_key.access_token} 
    else 
render json: {logged_in: false, access_token: nil} 
end 
end 

我很确定这个语法的工作原理,因为它正确地在用户控制器中生成访问令牌,但由于某种原因它会抛出错误h ERE。

回答

2

user@user不一样。

@user是一个实例变量,user是本地的方法。

要使用哪个取决于您需要什么,但您可能想要使用其中一个

def create 
    @user = User.find_by_username(params[:username]) 
    if (@user && @user.authenticate(params[:password])) 
    render json: {logged_in: true, access_token: @user.api_key.access_token} 

... 
+0

啊谢谢你,非常有帮助。抱歉提出这样一个基本问题,刚开始用rails – user2246110

相关问题