我有一个' 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测验。
非常感谢。
答案 0 :(得分:3)
在这里,我假设您在用户和测验之间拥有has_one关联。 因此,要构建关联对象,您需要使用以下代码。
current_user.build_quiz(quiz_params)
这将根据quiz_params构建测验对象,其中user_id字段包含当前用户的id和其他字段。