为什么current_user给我一个错误?

时间:2011-03-19 06:43:26

标签: ruby-on-rails ruby ruby-on-rails-3

在视频控制器的创建方法中,此行有效:

@video = Video.new(params[:video])

但是,我想将视频分配给用户,所以我使用这一行会给我一个错误:

@video = current_user.videos.new(params[:video])

这是错误:

NoMethodError in VideosController#create

undefined method `videos' for nil:NilClass

我的用户模型中有这个:

has_many :videos

这在我的视频模型中:

belongs_to :user

这是在我的application_controller文件中:

  def current_user
    return unless session[:user_id]
    @current_user ||= User.find_by_id(session[:user_id]) 
  end

  # Make current_user available in templates as a helper
  helper_method :current_user

如何修复此错误?如果我要发布更多代码,请告诉我。

1 个答案:

答案 0 :(得分:3)

此错误仅在用户未登录或没有会话[:user_id]时发生吗?

未登录时:

@video = current_user.videos.new(params[:video])

......会......

@video = nil.videos.new(params[:video])

会为您提供准确的NoMethodError