提前为noob问题/格式错误道歉。这是我的第一篇文章。我会尽力解释清楚。在我的应用中,我有两个对象quiz
和quiz_question
。
我想创建一个测验,其中包含10个与之相关的问题,但是想要在10页以上的网页上创建这些问题'而不是一页上的一个长形式。我正在尝试更新测验对象,但是当更新方法被调用时,它会再次添加所有问题,因此对象数量会迅速增加1,3,7等。
quiz
有很多quiz questions
这是我的控制者:
def new
@quiz = Quiz.new
1.times{@quiz.quiz_questions.new}
end
def create
# return render json:params
@quiz = Quiz.new(quiz_params)
respond_to do |format|
if @quiz.save
format.html{ redirect_to edit_quiz_path(@quiz.id)}
else
format.html{ render :new}
end
end
end
def edit
# return render json:params
@quiz = Quiz.find params[:id]
1.times{@quiz.quiz_questions.new}
end
def update
#return render json:params
@quiz = Quiz.find params[:id]
@quiz.update(quiz_params)
respond_to do |format|
if @quiz.save && @quiz.quiz_questions.count < 10
format.html{ redirect_to edit_quiz_path(@quiz.id)}
elsif @quiz.save && @quiz.quiz_questions.count > 10
format.html{ redirect_to dashboard_teachers_path, notice: "Quiz Created Successfully"}
else
format.html{ render :edit}
end
end
end
这是我的编辑视图
<%= simple_form_for(@quiz, :defaults => { :input_html => { :class => "hello" } }) do |f| %>
<%= f.error_notification %>
<%= f.simple_fields_for :quiz_questions do |builder| %>
<p><%= builder.input :question %></p>
<p><%= builder.input :correct_answer %></p>
<p><%= builder.input :incorrect_answer1 %></p>
<p><%= builder.input :incorrect_answer2 %></p>
<p><%= builder.input :incorrect_answer3 %></p>
<% end %>
<%= f.button :submit, class: "btn btn-default" %>
<% end %>
</div>
</div>
</div>
</div>
</div>
<script type="text/javascript">
$(window).load(function () {
$('input[type=text], textarea').each(function () {
// Cache pointer to selected dom element.
// Don't need to parse entire html each time you need that.
var input = $(this);
// .val() will return empty string if there is no value
// 0 means false in this case don't need to use equality check
if (!input.val()) {
input.parent().css("display", "block");
} else {
input.parent().css("display", "none");
}
});
})
</script>
编辑:为清楚起见。我想在编辑操作中进行10次,每次添加一个新的quiz_question
对象并将其分配给quiz
对象。
答案 0 :(得分:0)
如果要调用更新操作,则需要使用PUT
:
<%= simple_form_for(@quiz, :method => :put, :defaults => { :input_html => { :class => "hello" } }) do |f| %>