所以我有一个有多张照片的对象(通过使用一个名为asset的模型)。我正在使用回形针上传照片,而且工作正常。在我的节目页面上,我打电话给
<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次,并附带一张带有“缺失”照片占位符的额外图片标记。我会说我尝试了不同的东西,但我只是没有看到代码有什么问题。有什么想法吗?
答案 0 :(得分:1)
假设simple_fields_for
的行为与fields_for
相同......对f.simple_fields_for :assets
的调用已经是一个循环。它循环遍历f.object.assets
并为使用asset
表单生成器找到的每个项目呈现块的内容一次(调用该块变量asset_form
可能会有点混乱)办法)。所以,既然你渲染了一部分也会渲染@address
的所有资产,这就是为什么每次拍摄3张图像的原因。