我正在Rails 4中使用Refile。我正在关注multiple image upload的教程。每个帖子可以有多个图像。我的模型如下所示:

Post.rb:

has_many :images, dependent: :destroy
accepts_attachments_for :images, attachment: :file

Image.rb:
belongs_to :post
attachment :file

我可以上传文件,可以使用以下方法:
<%= f.attachment_field :images_files, multiple: true, direct: true, presigned: true %>

但是当我尝试检索像这样的图像时:
 <%= attachment_image_tag(@post.images, :file, :small) %>

我得到了错误:
undefined method file for #<Image::ActiveRecord_Associations_CollectionProxy:0x007fbaf51e8ea0>

如何使用多张图片上传来重新归档一张图片?

最佳答案

为了检索属于帖子的图像,您需要遍历图像数组。

<% @post.images.each do |image| %>
  <%= attachment_image_tag(image, :file, :fill, 300, 300) %>
<% end %>

助手attachment_image_tag采用:
  • [Refile::Attachment]对象:带有附件的类的实例。
  • [Symbol] name:附件列的名称

  • 因此在这里,@posts.images包含一个image对象的数组。具有附件的是该对象。
    class Image < ActiveRecord::Base
      belongs_to :post
      attachment :file
    end
    

    然后,当您迭代images时,将给您的助手image object以及附件列的名称,这里是:file

    10-08 15:32