2013-04-14 3 views
0

저는 응용 프로그램에서 작업 중이며 응용 프로그램에 로그인하는 데 문제가 있습니다. 나는 응용 프로그램에 사용자 이름과 비밀번호를 제출하면, 내가 얻을 다음에정의되지 않은 메소드 'api_key for nil : 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가 발생합니다. 오히려.

답변

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

아 감사합니다. 그런 기본적인 질문을하는 것에 대해 유감스럽게 생각합니다. 그냥 레일을 가지고 시작합니다. – user2246110

관련 문제