Инициализировать данные в редактировании используя объект формы рельсов

Я не могу инициализировать данные для атрибутов класса с использованием 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) не отображаются внутри текстового поля

0 ответов

Другие вопросы по тегам