Ruby on rails 嵌套属性字段不会使用“更改”按钮显示

Ruby on rails 嵌套属性字段不会使用“更改”按钮显示,ruby-on-rails,ruby,reform,Ruby On Rails,Ruby,Reform,我正在使用Reform gem在当前项目中创建一个表单对象,但嵌套字段不会显示在表单中。这是我的密码: 装运模式: class Shipment < ApplicationRecord has_one :shipment_detail end class-shipping

我正在使用Reform gem在当前项目中创建一个表单对象,但嵌套字段不会显示在表单中。这是我的密码:

装运模式:

class Shipment < ApplicationRecord
  has_one :shipment_detail
end
class-shipping
ShipmentDetail模型:

class ShipmentDetail < ApplicationRecord
  belongs_to :shipment
end
class ShipmentDetail
改革班

class ShipmentForm < Reform::Form
  property :shipment_type
  property :measure

  property :shipment_detail do
    property :po_number
    property :job_no
  end
end
class ShipmentForm
控制器

class ShipmentsController < ApplicationController
  def new
    @shipment = ShipmentForm.new(Shipment.new)
  end
end
class ShipmentsController
模板

<%= form_for @shipment, url: shipments_path, method: :post do |f| %>
  <%= f.label :shipment_type %><br />
  <%= f.text_field :shipment_type %><br /><br />

  <%= f.label :measure %><br />
  <%= f.text_field :measure %><br /><br />

  <%= f.fields_for :shipment_detail do |d| %>
    <%= d.label :po_number %><br />
    <%= d.text_field :po_number %><br /><br />

    <%= d.label :job_no %>
    <%= d.text_field :job_no %><br /><br />
  <% end %>
<% end %>













只有
装运类型
度量
字段在表单上可见,
订单号
作业号
不可见。我应该怎么做才能使它们可见?

在改革中,您需要使用
预填充符
创建一个新的/空白的:装运详细信息部分以显示在表单上

  • 预填充器是指在呈现之前要填写字段(也称为默认值)或添加嵌套表单的时间
  • 填充器是在验证之前运行的代码
以下是我在代码中使用的内容,您可以从中获得您的想法:

   collection :side_panels, form: SidePanelForm,
    prepopulator: ->(options) {
      if side_panels.count == 0
        self.side_panels << SidePanel.new(sales_order_id: sales_order_id, collection: sales_order.collection)
      end
    }
集合:侧面板,形式:侧面板形式,
预填充符:->(选项){
如果side_panels.count==0
自动侧面板无
@装运单。预填充!
@装运形式装运详细信息=>

回复:编辑表单

如果在新操作中创建ShipmentForm,并将“详细信息”部分留空,然后希望这些字段显示在“编辑”操作上,则也需要在该操作上再次运行预填充器。就像新操作一样


在我上面的代码中,我有
if side\u panels.count==0
行,如果当前没有行,将在编辑表单上添加缺少的行。

收款:发货\u详细信息do属性:采购订单号属性:作业\u无结束尝试this@stef难道你没有在编辑改革类之后重新启动你的开发服务器吗t不在重新加载路径列表中。您需要这样实例化吗?
@shipping=ShipmentForm.new(shipping.new(:shipping\u detail=>ShipmentDetail.new})
可能?是的,我在编辑中重新启动了服务器,嵌套属性的值不显示
 Controller#new
@shipment_form = ShipmentForm.new(Shipment.new)

@shipment_form.shipment_detail #=> nil

@shipment_form.prepopulate!

@shipment_form.shipment_detail #=> <nested ShipmentDetailForm @model=<ShipmentDetail ..>>