一个simple_form可以创建多个模型的实例吗?

时间:2018-09-17 11:52:09

标签: ruby-on-rails activerecord

我为simple_form模型获得了testrun,其中有多个复选框,这些复选框将一个测试用例数组保存在模型字段中

app / views / testruns / _form.html.erb

<%= simple_form_for @testrun do |f| %>
  <%= f.input :testcase, as: :check_boxes,
      collection: [["testcase1", :testcase1], ["testcase2", :testcase2], ... ]%>
  <%= f.submit %>
<% end %>

它可以正常工作,但是从现在开始,我需要创建另一个名为testcase的模型。提交表单后,除了创建新的testrun实例外,我还需要创建testcase实例,该实例取决于检查的每个标志。

任何想法我该怎么做?

1 个答案:

答案 0 :(得分:0)

您需要使用accepts_nested_attributes_forsimple_fields_for。假设您在has_many :testcases中有Testrun,并且Testcase的字段名称是name,下面的步骤将使您朝正确的方向前进。

#app/models/testrun.rb
accepts_nested_attributes_for :testcases

#app/controllers/testrun_controller.rb
def new
  @testrun = Testrun.new
  @testrun.testcases.build
end

private
def testrun_params
  params.require(:testrun).permit(:field1, :field2.., testcases_attrubtes: [name: []])
end

#app/views/testruns/_form.html.erb
<%= simple_form_for @testrun do |f| %>
  <%= f.simple_fields_for :testcases do |testcase| %>
    <%= testcase.input :name, as: :check_boxes,
      collection: [["testcase1", :testcase1], ["testcase2", :testcase2], ... ]%>
  <% end %>
  <%= f.submit %>
<% end %>