2016-02-12 3 views
0

У меня проблема с вложенными fields_for в рельсов, у меня есть список продуктов, и каждый продукт может иметь несколько изображений, поэтому я использую Angular.js для выполнения этой задачи, я последовал за этот учебник https://tatey.com/2013/01/13/adding-and-removing-children-with-rails-nested-forms-and-angularjs/, но имена входы не имеет правильное название, потому что индекс не увеличивается на первые парах только на втором, как это:Как установить правильный индекс для вложенных полей_for?

первый продукт имеет два изображения, так что имена, присвоенные каждый вход

catalog[products_attributes][0][images_products_attributes][0][url_image] 
catalog[products_attributes][0][images_products_attributes][1][url_image] 

Второй продукт имеет одно изображение, и это имена Атрибуты

catalog[products_attributes][0][images_products_attributes][0][url_image] 

Как вы можете видеть, что второй продукт имеет индекс на products_attributes, но это должно быть

Это мой код

<div ng-repeat="product in products"> 
    <div class="product"> 
    <%= f.fields_for :products, Product.new do |product|%> 
    <div class="field"> 
     Producto {{$index}} 
     <%= product.text_field :name, placeholder: "Nombre"%> 
    </div> 
    <div class="field"> 
     <%= product.text_field :description, placeholder: "Descripción" %> 
    </div> 
    <div class="field"> 
     <%= product.number_field :price, placeholder: "Precio" %> 
    </div> 
    <div class="field"> 
     <%= product.check_box :available %> 
    </div> 
    <input type="button" name="name" value="+" ng-click="addImageToProduct($index)"> 
    <div class="images"> 
     <div class="image" ng-repeat="image in product.images"> 
     <%= product.fields_for :images_products, ImagesProduct.new, child_index: "{{$index}}" do |image|%> 
     <div class="field"> 
      {{$index}}<%= image.file_field :url_image%> 
     </div> 
     <%end%> 
     <input type="button" name="name" value="-" ng-click="removeImageToProduct($parent.$index, $index)"> 
     </div> 
    </div> 
    <%end%> 
    </div> 
    <input class="step-button remove" type="button" name="name" value="Quitar" ng-click="removeProduct($index)"> 
</div> 

ответ

0

Вынуть child_index из ваших форм

child_index: "{{$index}}" 

И помещает код уже сгенерированный в окне с:

catalog[products_attributes][{{$parent.$index}}][images_products_attributes][$index][url_image] 
+0

Спасибо так много! Это работает! Я пробовал все это и ничего, но это прекрасно! – peternerd

Смежные вопросы