Rails 4+中的对象都是零?

时间:2016-07-15 08:46:27

标签: 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
  render 'new'
 end
end

def quiz_params
 params.require(:quiz).permit(:q1)
end

是我为QuizzesController提供的代码。但是,这会产生错误:

undefined method `build' for nil:NilClass

特别是在

@quiz = current_user.quiz.build(quiz_params)

我运行了rails控制台并键入了Quiz.new,它显示了每个字段为 ' nil'而且我不完全确定我需要修改什么,并希望得到指导。

测验模型belongs_to用户。 用户has_one测验。

非常感谢。

1 个答案:

答案 0 :(得分:3)

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

current_user.build_quiz(quiz_params)

这将根据quiz_params构建测验对象,其中user_id字段包含当前用户的id和其他字段。