Rails / SimpleForm:如何在表单中嵌套has_many关联的字段?

时间:2019-08-01 12:54:11

标签: ruby-on-rails simple-form simple-form-for

我的模型接受has_many关联的嵌套属性。

class Employee < ApplicationRecord

  has_many :job_references
  accepts_nested_attributes_for :address

我希望新员工表格上有多个job_references的字段。

我的控制器如下:

  class EmployeesController < ApplicationController
    def new
      @employee = employee.new
      2.times { @employee.job_references.build }
    end

我的表单中有这个

<%= form.simple_fields_for :job_references do |job_references_form| %>
  <%= job_references_form.simple_fields_for(:job_reference) do |job_reference_form| %>
    <%= job_reference_form.input :name, label: "Name" %>
    <%= job_reference_form.input :company %>
    <%= job_reference_form.input :role %>
    <%= job_reference_form.input :phone_number %>
  <% end %>
<% end %>

我希望表单显示很多输入,代表两个作业参考记录。但是,该表单使用一组字段进行渲染,仅供一个作业参考。

如何确保表单显示两组字段?

1 个答案:

答案 0 :(得分:0)

您可以在控制器中创建@job_reference_1@job_reference_2实例变量,然后为每个变量分别创建一个simple_fields_for块。如果您想变得更复杂,可以使用cocoonstimulus动态添加或删除嵌套字段。

您还可以在控制器中使用@job_references = 2.times {@ employee.job_references.build}。这是video,显示了如何动态处理嵌套表单。