Rails 4: Добавление child_index в динамически добавляемые (вложенные) поля формы с помощью Cocoon Gem

ОБНОВЛЕНО: я пытаюсь добавить / удалить поля формы во вложенную форму, включающую несколько моделей. Я видел Railscast "Dynamic Forms" Райана Бейтса, и я упомянулЭта статья с использованиемCocoon Gem, После этой статьи все заработало отлично, за исключением child_index. Child_index присутствует только на первом:kid поле ввода (:name) и первый:pet поля ввода (:name а также:age). Затем он возвращается к токену аутентификации для добавляемых полей.

Я удалил все JS и вспомогательные методы, и вместо этого я использую некоторые методы Cocoon, встроенные в JS.

Я исправил проблему, когда нажатие кнопки «Добавить» добавило бы два поля вместо одного, удалив= javascript_include_tag :cocoon отapplication.html.erb файл.

Я попытался добавить jQuery и помощники форм, но я не уверен, что правильно ввел код.

(Я изменил объекты модели, чтобы сделать отношения более ясными)

Файл parent.rb:

class Parent < ActiveRecord::Base

has_many :kids
has_many :pets, through: :kids # <<<<<< ADDED KIDS USING 'through:'

файл kid.rb:

class Kid < ActiveRecord::Base

belongs_to :parent
has_many :pets
accepts_nested_attributes_for :pets, reject_if: :all_blank, allow_destroy: true
validates :name, presence: true

файл pet.rb:

 class Pet < ActiveRecord::Base

 belongs_to :kid

 validates :name, presence: true

 validates :age, presence: true

Это мой файл _form.html.erb:

 <%= form_for @parent do |f| %>
  <% if @parent.errors.any? %>
   <div class="alert alert-danger">
    <h3><%= pluralize(@student.errors.count, 'Error') %>: </h3>

         <ul>
            <% @student.errors.full_messages.each do |msg| %>
                <li><%= msg %></li>
            <% end %>
         </ul>
    </div>
 <% end %>

   <div class="inline">
     <div>
        <%= f.fields_for :kids do |kid| %>
         <%= render 'kid_fields', f: kid %>
        <% end %>
           <div>
            <%= link_to_add_association "Add Kid", f, :kids, id: 'add_kid',
            'data-association-insertion-method' => 'before',
            'data-association-insertion-traversal' => 'closest' %>
           </div>
        <% end %>   
     </div>


    </div>
        <div class="form-actions">
            <%= f.submit 'Create Parent', class: 'btn btn-primary' %>
        </div>

<% end %>

Это мой файл _kid_fields.rb:

    <div class="nested-fields">

     <div class="kid-fields inline">
      <%= f.hidden_field :_destroy, class: 'removable' %>
      <%= f.text_field :name, class: 'form-control', placeholder: 'Kid's Name', id: 'kid-input' %>
        <div>
         <%= link_to_remove_association 'Remove Kid', f %>
        </div>


        <%= f.fields_for :pets do |pet| %>
         <%= render 'pet_fields', f: pet %>
        <% end %>
      </div>    
      <div>
       <%= link_to_add_association "Add Pet", f, :pets, id: 'add_pet',
            'data-association-insertion-method' => 'before' %>
      </div>
    </div>

Это мой файл _pet_fields.rb:

    <div class="nested-fields">
     <div class="pet-fields">
      <%= f.hidden_field :_destroy, class: 'removable' %>
      <%= f.text_field :name, placeholder: 'Pet Name', id: 'pet-name-input' %>
      <%= f.text_field :age, placeholder: 'Pet Age', id: 'pet-age-input' %>  
      <%= link_to_remove_association 'Remove Pet', f, id: 'remove_pet' %>
     </div>  
    </div>

Ответы на вопрос(2)

Ваш ответ на вопрос