首页 > 解决方案 > Rails/SimpleForm:如何在表单中嵌套 has_many 关联的字段?

问题描述

我的模型接受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 %>

我希望表单显示大量输入,代表两个工作参考记录。但是,表单会呈现一组仅用于一个作业参考的字段。

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

标签: ruby-on-railssimple-formsimple-form-for

解决方案


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

您还可以在控制器中使用 @job_references = 2.times { @employee.job_references.build }。这是一个视频,展示了如何动态地执行嵌套表单。


推荐阅读