Ruby on rails 嵌套属性字段不会使用“更改”按钮显示
我正在使用Reform gem在当前项目中创建一个表单对象,但嵌套字段不会显示在表单中。这是我的密码: 装运模式: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
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 ..>>