我为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
实例,该实例取决于检查的每个标志。
任何想法我该怎么做?
答案 0 :(得分:0)
您需要使用accepts_nested_attributes_for
和simple_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 %>