0

所以我有一个包含多张照片的对象(通过使用名为资产的模型)。我正在使用回形针上传照片,它工作正常。在我的展示页面上,我打电话

<li class="grid_3">Photos:<br /></li>
<% @address.assets.each do |asset| %>
  <li class='grid_3'><%= image_tag(asset.photo.url, size: '100x100') %></li>
<% end %>

照片显示完美。当我点击编辑页面时:

<%= f.simple_fields_for :assets do |asset| %>
  <%= render :partial => 'asset_fields', :locals => { :f => asset } %>
<% end %>

部分被渲染:

<div class='nested-fields'>
  <%= f.file_field :photo %>  
  <% unless f.object.new_record? %>
    <%= f.file_field :photo %>
    <% @address.assets.each do |asset| %>
      <li class='grid_3'><%= image_tag(asset.photo.url, size: '100x100')  %></li>
    <% end %>
  <% end %>
</div>

此时,每张照片都会显示 3 次,并带有一个带有“缺失”照片占位符的额外图像标签。我会说我尝试了不同的东西,但我只是看不出代码有什么问题。有任何想法吗?

4

1 回答 1

1

假设simple_fields_for行为与...相同,fields_for调用f.simple_fields_for :assets已经是一个循环。对于使用表单生成器找到的每个项目,它会循环f.object.assets并呈现块的内容一次(顺便asset说一下,调用该块变量可能会更容易混淆asset_form)。因此,由于您随后渲染了一个部分,该部分也渲染了所有资产,@address这就是您获得每张图像 3 次的原因。

于 2013-09-05T01:07:13.517 回答