通过表单构建器嵌套表单

时间:2016-09-19 20:08:28

标签: ruby-on-rails ruby

我有一个名为“贷款”的模型,它有很多:车辆。贷款的模型实现通过嵌套表单(通过simple_form gem提供)接受车辆的嵌套属性。

class Loan < ApplicationRecord
  has_many :vehicles
  accepts_nested_attributes_for :vehicles
end

class LoansController < ApplicationController

  def new
    @loan = Loan.new
    @loan.vehicles.build
  end

  def edit
    @loan = Loan.find(params[:id])
    @vehicle = @loan.vehicles
  end
end

Edit.html.erb:

<%= simple_form_for @loan, :html => {:class => "loan-edit-form"} do |f| %>
      <%= f.simple_fields_for :vehicles do |vehicle| %>
        <%= render 'vehicle_fields_edit', :f => vehicle %>
      <% end %>
<% end %>

_session_fields_edit.html.erb:

<div class="nested_vehicle" data-id="<%= @vehicle.id %>">
  <%= f.hidden_field :id, id: "vehicle_id", name: "vehicle_id" %>
  <div class="divider-top"></div>
  <div class="vehicle-number">
    Vehicle <span class="vehicle-count-rails"><%= f.index + 1 %></span>
  </div>
  ...... etc
</div>

问题是我无法在编辑嵌套表单中显示车辆的数据库记录ID,正如我在“data-id”属性中所做的那样,因为我使用的是简单的表单构建器而不是简单的使用@loan.vehicles.each do |vehicle|循环浏览贷款记录。

使用隐藏字段我能够显示记录ID,但是,它显示在输入表单字段项中,而我只需要检索ID值,以便在data-id属性中使用。

我已尝试过<%= f.id %>,但收到表单生成器错误。如上所述,如何在使用表单构建器时获取记录ID?

1 个答案:

答案 0 :(得分:0)

试试这个,而不是f.id

<%= f.object.id %>