在视频控制器的创建方法中,此行有效:
@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
如何修复此错误?如果我要发布更多代码,请告诉我。
答案 0 :(得分:3)
此错误仅在用户未登录或没有会话[:user_id]时发生吗?
未登录时:
@video = current_user.videos.new(params[:video])
......会......
@video = nil.videos.new(params[:video])
会为您提供准确的NoMethodError