【问题标题】:Rails nested forms select field default ValueRails 嵌套表单选择字段默认值
【发布时间】:2015-10-23 17:44:16
【问题描述】:

我在 Rails 4 的嵌套表单的选择字段中显示存储值时遇到问题。我可以使用嵌套表单创建记录而没有问题,但是当我使用相同的表单编辑记录时,详细信息存储在数据库未显示在选择框中。

我可以使用下面的语法在主表单中显示值,我只是不知道如何引用嵌套表单中的值。

这适用于主要形式:

<%= f.select :customer_id, options_for_select(Customer.all.collect {|c| [ c.name, c.id ] }, @estimate.customer_id), {}, { :class => 'form-control'} %>

这是我视图的相关嵌套部分。

<%= form_for @estimate, html: { class: "form-horizontal form-label-left" } do |f| %>
    ...
    <%= f.fields_for :estimate_details do |ff| %>
        <tr class="details_row nested-fields">
        <td><%= ff.select :area_id, options_for_select(Area.all.collect {|c| [ c.area_name, c.id ] }), {include_blank: true}, { :class => 'form-control'} %></td>
        <td><%= ff.select :product_id, options_for_select(Product.select(:product_number, :id).where(:active => 't').map {|c| [ c.product_number, c.id ] }), {include_blank: true}, { :class => 'form-control'} %></td>
        <td><%= ff.number_field :quantity, class: 'form-control', "min" => 1 %></td>
        <td><%= ff.select :accessory_id, options_for_select(Product.select(:product_number, :id).where(:accessory => 't', :active => 't').map {|c| [ c.product_number, c.id ] }), {include_blank: true}, { :class => 'form-control'} %></td>
        <td><%= ff.text_field :notes, class: 'form-control' %></td>
        <td><%= link_to_remove_association '<i class="fa fa-trash"></i>'.html_safe, f %></td>
        </tr>
    <% end %>
<% end %>

我尝试过使用 ff.area_id 和一堆其他变体,但每次尝试都会出现“未定义的方法...”错误。

我正在使用带有 Cocoon gem 的 Rails 4.2.4 进行动态嵌套。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 cocoon-gem


    【解决方案1】:

    您可以获取子表单的对象并使用它:

    ff.object.area_id
    

    【讨论】:

    • 哇,谢谢@zwippie。我在文档中看到了该语法,并一次又一次地尝试找出“对象”应该是什么......我没有意识到这是“对象”这个词......
    【解决方案2】:
    <td>
      <%= ff.select :area_id, options_for_select(Area.all.collect {|c| [ c.area_name, c.id ], ff.object.area_id }), {include_blank: true}, { :class => 'form-control'} %>
    </td>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-15
      • 1970-01-01
      • 1970-01-01
      • 2021-12-11
      • 2014-04-11
      • 2019-07-26
      • 1970-01-01
      相关资源
      最近更新 更多