Ruby on rails Rails6使用单个表单保存多个记录
我正在创建一个应用程序,其中注册的一部分是法律测试。我有一个模型Ruby on rails Rails6使用单个表单保存多个记录,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在创建一个应用程序,其中注册的一部分是法律测试。我有一个模型TestResult,它只有一个字段answer:string,它属于:test\u question。我想使用户能够在views/test\u results/new.html.erb <% @randomize_questions.each do |q| %> <%= simple_form_for(@test_result) do |f| %> <%= f.error_notifica
TestResult
,它只有一个字段answer:string
,它属于:test\u question
。我想使用户能够在views/test\u results/new.html.erb
<% @randomize_questions.each do |q| %>
<%= simple_form_for(@test_result) do |f| %>
<%= f.error_notification %>
<%= f.error_notification message: f.object.errors[:base].to_sentence if f.object.errors[:base].present? %>
<%= q[:question] %>
<%= f.input :answer, collection: q[:answers], as: :radio_buttons %>
<%= f.button :submit %>
<% end %>
<% end %>
- 用户必须回答每个预定义类别中的5个随机法律问题(方法
)从
获取随机问题TestResultsController
- 选中每个问题下方的单选按钮并点击提交
- 只要提交一次,来自5个单独表单的数据应保存为数据库中的5条不同记录
- 在当前的实现中,我在每个答案之后呈现提交按钮
class TestResult < ApplicationRecord
belongs_to :test_question
validates :answer, presence: true
end
class TestQuestion < ApplicationRecord
CATEGORIES = %w[Q1 Q2 Q3 Q4 Q5].freeze
has_many :test_results, dependent: :destroy
end
views/test\u results/new.html.erb
<% @randomize_questions.each do |q| %>
<%= simple_form_for(@test_result) do |f| %>
<%= f.error_notification %>
<%= f.error_notification message: f.object.errors[:base].to_sentence if f.object.errors[:base].present? %>
<%= q[:question] %>
<%= f.input :answer, collection: q[:answers], as: :radio_buttons %>
<%= f.button :submit %>
<% end %>
<% end %>
查看嵌套的属性,并接受\u嵌套的\u属性\u。它可以做你想做的。@Doon谢谢你,它真的很方便!但是我不明白当我试图创建一个属于
TestQuestion
的新TestResult
时应该如何实现它。我认为Nasted属性可以在相反的情况下工作。或者我的关联是错误的?我不认为这是嵌套属性的情况。明白了。我误解了。所以你需要一个有5个随机问题的表格。提交时会在数据库中创建5个测试结果?您可能需要以1种形式(与倍数相反)进行操作,并且可以尝试使用无表模型来表示问题集,然后问题集控制器可以持久化到正确的表中。(这只是我在大声思考)。但是目前的数据模型似乎有点难(例如,如果你随机化,你会知道正确的答案吗,等等)
Q1 - first question
-answer1
-correct_answer
-answer2
Q2 - second question
-answer1
-answer2
Q3 - third question
-answer1
-answer2
-answer3
-correct_answer
(...)
Submit