Ruby on rails EventRegistrationControllerNew中的NoMethodError未定义nil:NilClass的方法“id”
我正在为一位体育教练开发一个网站。我目前正在尝试制作一个表单,允许我的网站用户注册不同的体育赛事。当用户登录时,我希望他们能够单击特定事件旁边的注册按钮,然后将他们的用户id和事件id放入我创建的表中。以下是注册控制器的新部分:Ruby on rails EventRegistrationControllerNew中的NoMethodError未定义nil:NilClass的方法“id”,ruby-on-rails,Ruby On Rails,我正在为一位体育教练开发一个网站。我目前正在尝试制作一个表单,允许我的网站用户注册不同的体育赛事。当用户登录时,我希望他们能够单击特定事件旁边的注册按钮,然后将他们的用户id和事件id放入我创建的表中。以下是注册控制器的新部分: def new @event = Event.find(params[:event_id]) @user = User.current @user_id = @user.id @event_registr
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
所以基本上这就是找到相关的id。事件id很好,但当它到达当前用户时,似乎找不到登录者的id。我有一个会话助手,它是:
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吗?在您的RegistrationController中包括SessionHelper,如下所示:
包括SessionHelper
改变
@user=user.current
致:
@user=current\u user您使用的是current,而方法名是current\u user,我认为您不应该将其称为user.current\u user,但不确定是否正确?因为seesionmodule对我来说不清楚,所以我试过了,但它说@Nimirin的未定义方法“current_user”,你的注册控制器包括SessionHelper并将@user=user.current更改为current_users这似乎没有改变错误。我猜我需要返回并确保会话助手确实被使用。用户可以登录并访问登录页面,所以我认为会话助手的使用是正确的@bjhaidOh等等,我想我误解了你所说的。我已经在应用程序控制器中包含了SessionHelper,我将@user=user.current更改为@user=current\u user,它成功了。谢谢你们的帮助,非常感谢@bjhaid@Nimir