1

いくつかの一般的なフィールドを検証するために ActiveModel オブジェクトを使用する複雑なフォームが 1 つあります。

  class FormReportPivot
   include ActiveModel::Validations
   include ActiveModel::Conversion
   extend ActiveModel::Naming

   attr_accessor :name, :pages, :columns, :rows, :table, 
   :pages_aggregation, :columns_aggregation, :rows_aggregation, :table_aggregation

   def initialize(attributes = {})
    attributes.each do |name, value|
      public_send("#{name}=", value)
    end
   end

   def persisted?
    false
   end

  end

このフィールドにはnested_formがあります:

 = f.simple_fields_for :pivots do |pivots_builder|
  = render :partial => 'pivot_fields', :locals => { :pivots_builder => pivots_builder }
  = f.link_to_add "Add pivot", :pivots, model_object: FormReportPivot.new, class: "btn blue"

部分的:

  = pivots_builder.input :name, input_html: {:class => "m-wrap"}, 
    placeholder: t('.name')
  = pivots_builder.input :columns, collection: @form_report.columns_collection, :include_blank => false, input_html: {:class => "m-wrap chosen", multiple: true}
  = pivots_builder.input :rows, collection: @form_report.columns_collection, :include_blank => false, input_html: {:class => "m-wrap chosen", multiple: true}
  = pivots_builder.input :table, collection: @form_report.columns_collection, :include_blank => false, input_html: {:class => "m-wrap chosen", multiple: true}
  = pivots_builder.input :table_aggregation, collection: FormReport::AGGREGATING_FUNCTIONS, :include_blank => false, input_html: {:class => "m-wrap chosen"}

しかし、「ピボットを追加」をクリックすると、同じ名前で同じ ID でタイムスタンプのない同じフィールドが取得されます。

 <input class="string optional m-wrap m-wrap" 
 id="form_report_pivots_attributes_name" 
 name="form_report[pivots_attributes][name]" placeholder="" title="">
4

1 に答える 1