Инициализировать данные в редактировании используя объект формы рельсов
Я не могу инициализировать данные для атрибутов класса с использованием Virtus Gem. Вот мой пример кода:
class ShipmentForm
include Virtus.mode
attr_reader :shipment
attr_reader :shipment_detail
attribute :shipment_type, String
attribute :shipment_detail, ShipmentDetailAttribute
def initialize(attr = {})
if !attr['id'].nil?
@shipment = Shipment.find(attr['id'])
@shipment_detail = @shipment.shipment_detail
self[:shipment_type] = attr[:shipment_type].nil? ? @shipment.shipment_type : attr[:shipment_type]
self[:shipment_detail] = attr[:shipment_detail].nil? ? @shipment_detail.attributes : attr[:shipment_detail]
else
super(attr)
end
end
end
class ShipmentDetailAttribute
include Virtus.model
attribute :po_number
attribute :job_no
etc...
end
Моя хамл форма
= form_for @shipment, url: shipments_path, method: :patch do |f|
= f.text_field :shipment_type
= f.fields_for :shipment_detail do |detail|
= detail.text_field :po_number
= detail.text_field :job_no
etc ....
Данные для полей shipment_detail (po_number, job_no) не отображаются внутри текстового поля