我在 rails 中遇到了嵌套 fields_for 的问题,我有一个产品列表,每个产品都可以有多个图片,所以我使用Angular.js来完成这个任务,我按照本教程https://tatey.com/2013/01/13/adding-and-removing-children-with-rails-nested-forms-and-angularjs/,但输入的名称没有正确的名称,因为索引不会在第一个参数上仅在第二个参数上递增,如下所示:
第一个产品有两个图像,因此这是分配给每个输入的名称
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 上的第二个产品的索引 0 ,但它应该 1
这是我的代码
<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 :(得分:0)
从表单中删除child_index
child_index: "{{$index}}"
并将已生成的代码放在视图中:
catalog[products_attributes][{{$parent.$index}}][images_products_attributes][$index][url_image]