Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails EventRegistrationControllerNew中的NoMethodError未定义nil:NilClass的方法“id”_Ruby On Rails - Fatal编程技术网

Ruby on rails EventRegistrationControllerNew中的NoMethodError未定义nil:NilClass的方法“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

我正在为一位体育教练开发一个网站。我目前正在尝试制作一个表单,允许我的网站用户注册不同的体育赛事。当用户登录时,我希望他们能够单击特定事件旁边的注册按钮,然后将他们的用户id和事件id放入我创建的表中。以下是注册控制器的新部分:

    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