current_user有一个测验,其中有1到5个问题,在此处输入:
<%= form_for @quiz do |f| %>
<div class="field"> <!-- question 1 name -->
<%= f.label :q1, "What will be your first question?", :class => "edit_labels", :maxlength => 10 %>
<%= f.text_field :q1, :placeholder => "Question 1", :style => "text-align: center" %>
</div>
,,,,
在控制器中创建的以
形式发生def landing
@quiz = Quiz.new
end
测验控制器中的:
def edit
@quiz = Quiz.find(params:[id])
end
def create
@quiz = current_user.build_quiz(quiz_params)
if @quiz.save
flash[:success] = "Updated"
redirect_to '/'
else
render 'new'
end
end
def quiz_params
params.require(:quiz).permit(:q1, :q2, :q3, :q4, :q5)
end
def show
@quizzes = Quiz.all
end
现在,当我尝试显示用户时:
/users/index.html.erb
<%= render @users %>
和部分:
/users/_user.html.erb
<%= user.username %>
<%= user.quiz.q1 %>
etc...more fields
它可以生成用户名,但不适用于quiz.q1 具体来说,我得到
undefined method `q1' for nil:NilClass
但如果我输入
<%= current_user.quiz.q1 %>
在'welcome / landing.html.erb'中,它会产生正确的结果。
我非常感谢一些帮助。谢谢。