Rails cocoon嵌套字段,在编辑表单上呈现每个字段旁边的现有图像

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rails cocoon嵌套字段,在编辑表单上呈现每个字段旁边的现有图像相关的知识,希望对你有一定的参考价值。

我正在使用cocoon gem为产品添加附件。这是我在新产品表单中呈现cocoon嵌套表单字段的部分。

<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>

所有上述工作都很好。产品也随附件一起创建。

现在我正在尝试开发编辑产品表单,我也可以编辑产品和附件。这个也一切正常。我唯一的麻烦是....如何将每个现有的附件图像添加到编辑表单中相关的cocoon嵌套字段???目前只显示字段,并且用户不知道哪个字段包含什么图像,因此他可以进行他希望的更改。我尝试了以下操作,图像在每个字段上正确显示,但每个现有字段都呈现两次:

<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>
答案

attachment_fields partial中,将这些行添加到显示图像中

<% if form.object.persisted? %>
    <%= image_tag form.object.images_url(:thumb).to_s %>  ## form.object will return your attachment object, from this you can access your image
<% end %>

您现有的字段会多次渲染,因为您在eachattachments循环中多次渲染嵌套字段。

将你的div id="attachments"恢复为:

<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>

以上是关于Rails cocoon嵌套字段,在编辑表单上呈现每个字段旁边的现有图像的主要内容,如果未能解决你的问题,请参考以下文章

使用 COCOON Rails 3 在动态字段中自动完成 Jquery

在 Ruby on Rails 4.2 中使用 Cocoon gem 嵌套表单

<ol> <li> 使用 rails partial 和 cocoon gem 实现的问题

cocoon link_to_add_association 添加空关联字段 rails 4 erb

rails 在哪里获取嵌套对象的查询?

在编辑表单上隐藏 Rails 4 上 jquery.timepicker 的空日期值