Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.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 Rails 4+;中的对象均为零;?_Ruby On Rails_Ruby_Ruby On Rails 4_Model View Controller_Models - Fatal编程技术网

Ruby on rails Rails 4+;中的对象均为零;?

Ruby on rails Rails 4+;中的对象均为零;?,ruby-on-rails,ruby,ruby-on-rails-4,model-view-controller,models,Ruby On Rails,Ruby,Ruby On Rails 4,Model View Controller,Models,我在视图中的“欢迎”文件夹下有一个“landing.html.erb”。在WelcomeController中,我有以下内容: def landing @quiz = Quiz.new end 创建一个新的测验。当用户单击“创建”按钮时 def create @quiz = current_user.quiz.build(quiz_params) if @quiz.save flash[:success] = "Updated" redirect_to @quiz else ren

我在视图中的“欢迎”文件夹下有一个“landing.html.erb”。在WelcomeController中,我有以下内容:

def landing
@quiz = Quiz.new
end
创建一个新的测验。当用户单击“创建”按钮时

def create
@quiz = current_user.quiz.build(quiz_params)
if @quiz.save
  flash[:success] = "Updated"
  redirect_to @quiz
else
  render 'new'
 end
end

def quiz_params
 params.require(:quiz).permit(:q1)
end
是我为测验控制器准备的代码。但是,这会产生以下错误:

undefined method `build' for nil:NilClass
特别是在生产线上

@quiz = current_user.quiz.build(quiz_params)
我运行rails控制台并键入quick.new,它将每个字段显示为“nil”,我不完全确定需要修改什么,希望得到指导

测验模型属于用户。 用户有一个测验


非常感谢。

这里我假设用户和测验之间有一个关联。 因此,对于构建关联对象,您需要使用以下代码

current_user.build_quiz(quiz_params)

这将使用用户id字段生成测验对象,该字段包含当前用户的id以及根据测验参数生成的其他字段。

您需要使用当前用户。如果有关联,则生成测验(测验参数)。如果您不介意,我将给出详细答案。@power没问题!