0

我正在使用 Rails、Mongoid 和载波。

这是我正在使用的代码。

页面.rb

class Page
    include Mongoid::Document
    include Mongoid::Timestamps

    embeds_many :pictures

    attr_accessible :picture_image, :picture_image_cache, :picture_title
end

图片.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 %>,但事实并非如此。

我错过了什么简单、愚蠢的错误?

4

1 回答 1

0

我没有检查,但embeds_many :pictures你的循环的关系必须是:

<% @page.pictures.each do |picture| %>
  .
  .
  .
 <% end %>

如果我了解您想要做什么并且您只想在循环中显示 1 张图片,您可以尝试:

<% for picture in @page.pictures.limit(1).shuffle %>
 .
 .
 .
<% end %>

试试这个代码!

于 2013-01-23T14:25:46.350 回答