Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails6使用单个表单保存多个记录_Ruby On Rails_Ruby - Fatal编程技术网

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