Вложенная форма принимает_nested_attributes_для предоставления динамического массива — Rails4

#ruby-on-rails #ruby-on-rails-3 #ruby-on-rails-4 #nested-forms

#ruby-on-rails #ruby-on-rails-3 #ruby-on-rails-4 #вложенные формы

Вопрос:

Я работаю над Rails4 с вложенной формой, accepts_nested_attributes_for я могу генерировать вложенную форму, но при проверке формы она выдает динамический массив.

  <input type="text" name="event_venue[event_contact_details_attributes][1403763304978][name]" id="event_venue_event_contact_details_attributes_1403763304978_name" class="form-control">
  

Но это должно быть,

<input type="text" name="event_venue[event_contact_details_attributes][1][name]" id="event_venue_event_contact_details_attributes_1_name" class="form-control" >

 <div class="formWrapper">
  <div class="col-md-6">
    <div class="form-group">
      <label for="exampleInputEmail1">Name</label>
      <input type="text" name="event_venue[event_contact_details_attributes][1403764358820][name]" id="event_venue_event_contact_details_attributes_1403764358820_name" class="form-control">
    </div>
    <div class="form-group">
      <label for="exampleInputEmail1">Phone</label>
      <input type="text" name="event_venue[event_contact_details_attributes][1403764358820][telephone]" id="event_venue_event_contact_details_attributes_1403764358820_telephone" class="form-control">
    </div>
    <div class="form-group">
      <label for="exampleInputEmail1">Email</label>
      <input type="text" name="event_venue[event_contact_details_attributes][1403764358820][email]" id="event_venue_event_contact_details_attributes_1403764358820_email" class="form-control">
    </div>
    <div class="clearfix"></div>
    <input type="hidden" value="false" name="event_venue[event_contact_details_attributes][1403764358820][_destroy]" id="event_venue_event_contact_details_attributes_1403764358820__destroy"><a onclick="remove_fields(this); return false;" href="#">remove</a>
  </div>
</div>
  

Можете ли вы помочь мне, где я пропускаю вещи …!!!

В первом наборе вложенных форм все идет правильно,

 <div class="formWrapper">
  <div class="col-md-6">
    <div class="form-group">
      <label for="exampleInputEmail1">Name</label>
      <input type="text" value="AS" name="event_venue[event_contact_details_attributes][0][name]" id="event_venue_event_contact_details_attributes_0_name" class="form-control">
    </div>
    <div class="form-group">
      <label for="exampleInputEmail1">Phone</label>
      <input type="text" value="AS" name="event_venue[event_contact_details_attributes][0][telephone]" id="event_venue_event_contact_details_attributes_0_telephone" class="form-control">
    </div>
    <div class="form-group">
      <label for="exampleInputEmail1">Email</label>
      <input type="text" value="AS" name="event_venue[event_contact_details_attributes][0][email]" id="event_venue_event_contact_details_attributes_0_email" class="form-control">
    </div>
    <div class="clearfix"></div>
    <input type="hidden" value="false" name="event_venue[event_contact_details_attributes][0][_destroy]" id="event_venue_event_contact_details_attributes_0__destroy"><a onclick="remove_fields(this); return false;" href="#">remove</a>
  </div>
</div>
  

Модель места проведения события,

 has_many :event_contact_details, :dependent => :destroy
    accepts_nested_attributes_for :event_contact_details, allow_destroy: true
  

Контроллер,

 def new
    @event_venue = EventVenue.new
    @event_venue.event_contact_details.build
  end
  

форма,

 <%= f.fields_for :event_contact_details do |builder| %>
            <%= render :partial => 'event_venues/event_contact_detail_fields', 
                       :locals => { :f => builder } %>
          <% end %>

          <p><%= link_to_add_fields "Add More", f, :event_contact_details  %></p>   
  

Комментарии:

1. можете ли вы опубликовать свою полную форму?

2. так ли выглядит ваша форма в вашем файле представления? и можете ли вы опубликовать свою модель event_venue и файлы контроллера?

3. Я думаю, что это проблема с child_index!!!

4. можете ли вы проверить, что @event_venue.event_contact_details.build строится? в идеале он должен просто инициализироваться с нулевыми значениями

5. да, все значения равны нулю, #<Идентификатор детали контакта события: nil, имя: nil, телефон: nil, электронная почта: nil, event_id: nil, event_venue_id: nil, created_at: nil, updated_at: nil>