Я использую cocoon gem
для добавления вложений в продукт. Это та часть, где я рендеринг вложенных полей формы кокона внутри формы нового продукта.
<div id="attachments">
<%= f.label :images, required: true %>
<%= render 'products/attachment_fields', form: attachment %>
<% end %>
<div class="links" id="add_attachment" style="display: inline; float: right;">
<%= link_to_add_association 'add more images', f, :attachments, form_name: 'form' %>
</div>
</div>
Это частичное:
<div class="nested-fields">
<span class="control-fileupload">
<%= form.input :images,:label => "Choose a file", as: :file, :input_html => { class: "file_input" } %>
</span>
<%= link_to_remove_association "remove", form %>
</div>
Все вышеперечисленное работает просто отлично. Продукт создается вместе с вложениями.
Сейчас я пытаюсь разработать форму редактирования продукта, в которой я мог бы редактировать как продукт, так и приложения. С этим тоже все нормально работает. Единственная проблема, с которой я сталкиваюсь, это .... как добавить каждое существующее изображение вложения в соответствующее вложенное поле кокона в форме редактирования ??? В настоящее время отображаются только поля, и пользователь не знает, какое поле содержит какое изображение, поэтому он может вносить изменения, которые он желает. Я попробовал следующее, изображение показывалось правильно на каждом поле, но каждое существующее поле рендерилось дважды:
<div id="attachments">
<%= f.label :images, required: true %>
<%= f.simple_fields_for :attachments do |attachment| %>
<% if @attachments.present? %>
<% @attachments.each do |attached| %>
<%=image_tag attached.images_url(:thumb).to_s %>
<%= render 'retailer_products/attachment_fields', form: attachment %>
<% end %>
<% end %>
<% end %>
<div class="links" id="add_attachment" style="display: inline; float: right;">
<%= link_to_add_association 'add more images', f, :attachments, form_name: 'form' %>
</div>
</div>