嵌套形式更新有多个父对象并创建一个*单个*子对象

nested form to update has-many parent AND create a *single* child object

我想要一个表单来一次性编辑单个新的子对象和父对象(在有很多关系的情况下)。如果我使用 @child = @parent.children.new 在控制器中创建一个新子项,则以下工作正常,但它显示 所有 个现有子项的输入字段。

<%= simple_form_for @parent do |p| %>
  <%= p.input :parent_attribute %>
  <%= p.simple_fields_for :children do |c| %>
    <%= c.input :child_attribute %>
  <% end %>
<% end %>

如何只显示创建的单个新子项的表单输入字段?

如果要在父窗体中显示新的单个子窗体,可以这样做:

<%= simple_form_for @parent do |p| %>
  <%= p.input :parent_attribute %>
  <%= p.simple_fields_for :child, @child do |c| %>
    <%= c.input :child_attribute %>
  <% end %>
<% end %>

请注意,您必须指定子模型名称以及子模型对象以 simple_fields_for(或 fields_for)引用特定模型对象。

如果只想显示新的单子窗体,可以这样做:

<%= m.simple_form_for @child do |c| %>
  <%= c.input :child_attribute %>
<% end %>

这将为新的子记录创建表单。