2014-04-12 4 views
0

스포츠 코치를위한 웹 사이트를 개발 중입니다. 저는 현재 내 웹 사이트 사용자가 다른 스포츠 이벤트에 가입 할 수 있도록 양식을 작성하려고합니다. 사용자가 로그인하면 특정 이벤트 옆에있는 등록 단추를 클릭 한 다음 user_idevent_id을 내가 만든 테이블에 넣을 수 있습니다.EventRegistrationsController의 NoMethodError 새롭게 정의되지 않은 메소드 'id'for nil : NilClass

def new 
     @event = Event.find(params[:event_id]) 
     @user = User.current 
     @user_id = @user.id 

     @event_registration = @event.event_registrations.build({:user_id => @user_id}, 
     :without_protection =>true) 
    end 

그래서 기본적으로이 해당 아이디의를 찾는 것입니다 : 여기에 등록 컨트롤러의 새로운 섹션입니다. .

module SessionsHelper 
     def sign_in(user) 
     remember_token = User.new_remember_token 
     user.update_attribute(:remember_token, User.hash(remember_token)) 
     self.current_user = user 
     end 

    def signed_in? 
     !current_user.nil? 
    end 

    def current_user=(user) 
     @current_user = user 
    end 

    def current_user 
     remember_token = User.hash(cookies[:remember_token]) 
     @current_user ||= User.find_by(remember_token: remember_token) 
    end 

    def current_user?(user) 
     user == current_user 
    end 

    def signed_in_user 
     unless current_user 
     store_location 
     redirect_to signin_url, notice: "Please sign in." 
    end 
    end 

는 내가 포함되어 있다고 생각 : 이벤트 ID가 잘이지만 현재 사용자에 도달 때에 서명 한 사람의 ID를 찾을 수가 없습니다 내가하는 세션 도우미가 여기에 코드의 모든 관련 부분이 있습니다. 왜 현재 사용자 ID를 찾지 못하는지 알 수 있습니까? 당신의 RegistrationsController에서

+1

메서드 이름이'current_user' 인 동안 당신은'current'를 사용하고 있는데,'User.current_user'로 호출해야한다고 생각하지 않습니다. 그러나 올바른 방법은 확실하지 않습니까? seesionmodule이 나에게 명확하지 않기 때문에 – Nimir

+0

yea 나는 그것을 시도했다. 그러나 ** 미 정의 된 메소드'current_user '는 # ** @Nimir – user3494239

+1

의'RegistrationsController'에'SessionHelper'를 포함하고'@user = User.current'를 'current_user' – bjhaid

답변

0

는 아래의 SessionHelper이 포함

include SessionHelper

및 변경

@user = User.current

에 :

@user = current_user

관련 문제