我正在使用Rails,Mongoid和载波。
这是我正在使用的代码。
page.rb
class Page
include Mongoid::Document
include Mongoid::Timestamps
embeds_many :pictures
attr_accessible :picture_image, :picture_image_cache, :picture_title
end
picture.rb
class Picture
include Mongoid::Document
mount_uploader :picture_image, Picture_imageUploader
embedded_in :page
field :picture_image, :type => String
field :picture_title, :type => String
end
form.html.erb
<%= simple_nested_form_for(@page) do |f| %>
<%= f.fields_for :pictures do |f| %>
<!-- This is a nested form -->
<!-- Preview of previously uploaded picture -->
<% @page.pictures.each do |picture| %>
<%= image_tag picture.picture_image_url(:thumb).to_s %>
<% end %>
<!-- Upload button -->
<%= f.input :picture_image, :as => :file, :label => 'Choose an Image:'%>
<!-- Title for picture -->
<%= f.input :picture_title, :label => 'Picture Title:'%>
<%= f.link_to_remove "Delete this item" %>
<% end %>
<% end %>
在编辑表单中 - 我想在“上传新图片”按钮上方显示之前上传图片的预览。上面的代码工作,除了它循环(显然)并显示每个部分中的所有图像。例如,如果我有3个“图片”条目,它将在每个“上传”按钮上方显示所有三张图片。
我只希望它显示该特定条目的相关图像。我会想象这样的东西会起作用<%= image_tag @page.picture_image_url(:thumb).to_s %>
但事实并非如此。
我错过了什么简单,愚蠢的错误?
答案 0 :(得分:0)
我没有检查但是embeds_many :pictures
你的循环的关系必须是:
<% @page.pictures.each do |picture| %>
.
.
.
<% end %>
如果我理解你想做什么而你想在你的循环中只显示1张图片,你可以尝试:
<% for picture in @page.pictures.limit(1).shuffle %>
.
.
.
<% end %>
尝试使用此代码!