【发布时间】:2022-06-10 18:11:58
【问题描述】:
我正在构建一个测验并使用嵌套表单来提交答案。我想我正在研究如何提交嵌套表单数组?
我有以下设置:
测验
has_many :quiz_answers, dependent: :destroy
accepts_nested_attributes_for :quiz_answers, allow_destroy: true
测验答案
belongs_to :quiz, optional: true
接下来的两个创建由管理员设置的测验问题和选项(即 a、b、c、d)。这允许根据需要即时添加和取出问题。这部分工作正常,我在这里没有问题。
测验问题
has_many :quiz_options, dependent: :destroy
accepts_nested_attributes_for :quiz_options, allow_destroy: true
测验选项
belongs_to :quiz_question, optional: true
我遇到的这个问题是当用户开始测验时,我如何遍历每个问题并让用户提交一个选项,单击下一步并继续下一个问题,直到全部完成?到目前为止,我认为它正在为数据库保存一个答案,但它列出了所有问题:
class QuizzesController < ApplicationController
def new
@quiz = Quiz.new
@quiz_question = QuizQuestion.where(active: true)
@quiz.quiz_answers.build
end
def create
@quiz = Quiz.new(quiz_params)
respond_to do |format|
if @quiz.save
format.html { redirect_to quiz_url(@quiz), notice: "Quiz was successfully created." }
format.json { render :show, status: :created, location: @quiz }
else
format.html { render :new, status: :unprocessable_entity }
format.json { render json: @quiz.errors, status: :unprocessable_entity }
end
end
end
end
表格
<%= form_with(model: quiz) do |form| %>
<%= form.fields_for :quiz_answers do |builder| %>
<%= render 'quiz_answer', form: builder %>
<% end %>
<%= form.submit "Submit", class: 'btn btn-primary' %>
<% end %>
部分
<% @quiz.each do |question| %>
<h2><%= question.question %></h2>
<% question.quiz_options.each do |o| %>
<%= form.radio_button :answer, o.answer %> <%= o.answer %>
<% end %>
<% end %>
总而言之,我想知道问题 1、用户提交答案、问题 2、用户提交答案等是否可以在嵌套表单环境中全部来自预先确定的问题和答案?
【问题讨论】:
标签: ruby-on-rails