使用嵌套表单,通过一个提交按钮更新两个非关联模型

Update two non-associated models with one submit button, using nested form

我有一个 User 控制器,它拥有以下两个记录:

user.vehicles 来自 VehiclesController user.trip_distances 来自 TripDistancesController

Vehicles 视图中,我需要显示和更新两个模型(VehicleTripDistance

我发现我需要使用 nested form。但是,我不明白如何实现它,因为我的 @trip_distances 记录需要一个循环才能显示其所有内容。

首先,我试图将它放入 Vehicle 模型中,但由于两者都没有链接,我想知道这是否正确:

accepts_nested_attributes_for :trip_distances, allow_destroy: true

然后,在 Vehicle 视图的 _form 文件中,在 edit 操作期间,我有:

<%= form_for(@vehicle) do |f| %>

我需要将我的嵌套表单放入其中。这是我到目前为止得到的:

<% @trip_distances.each do |t| %>
  <%= f.fields_for t do |fields| %>
    <div class="field">
      <%= fields.text_field :id_contract %>
      <%= fields.number_field :length %>
    </div>
  <% end %>
<% end -%>

我的 trip_distances 记录可以正确显示,但唯一的提交按钮不再起作用。我想在单击一个按钮的同时更新两个模型。我错过了什么?

我能够通过关联这两个模型来使其工作。然后我使用以下 fields_for 标签:

<%= f.fields_for :trip_distances do |builder| %>

我的提交按钮现在可以使用了,但是 :trip_distances 字段没有更新,我不知道为什么。