스포츠 코치를위한 웹 사이트를 개발 중입니다. 저는 현재 내 웹 사이트 사용자가 다른 스포츠 이벤트에 가입 할 수 있도록 양식을 작성하려고합니다. 사용자가 로그인하면 특정 이벤트 옆에있는 등록 단추를 클릭 한 다음 user_id
및 event_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
에서
메서드 이름이'current_user' 인 동안 당신은'current'를 사용하고 있는데,'User.current_user'로 호출해야한다고 생각하지 않습니다. 그러나 올바른 방법은 확실하지 않습니까? seesionmodule이 나에게 명확하지 않기 때문에 – Nimir
yea 나는 그것을 시도했다. 그러나 ** 미 정의 된 메소드'current_user '는 # ** @Nimir – user3494239
의'RegistrationsController'에'SessionHelper'를 포함하고'@user = User.current'를 'current_user' – bjhaid