EventRegistrationsController中的NoMethodError #nil的未定义方法`id':NilClass

时间:2014-04-12 13:28:32

标签: ruby-on-rails

我正在为体育教练开发一个网站。我目前正在尝试制作一个表单,让我的网站用户注册参加不同的体育赛事。当用户登录时,我希望他们能够单击特定事件旁边的注册按钮,然后他们的user_idevent_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?

1 个答案:

答案 0 :(得分:0)

RegistrationsController中添加SessionHelper,如下所示:

include SessionHelper

并更改

@user = User.current

为:

@user = current_user