Refile Gem: несколько загрузок файлов

Я использую Refile с Rails 4. Я следую их руководству по загрузке нескольких изображений. Каждый пост может иметь несколько изображений. Мои модели выглядят так:

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>

Как я могу получить изображение с помощью функции refile, используя загрузку нескольких изображений?

2 ответа

Чтобы получить изображения, принадлежащие сообщению, необходимо выполнить итерацию по массиву изображений.

<% @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,

Вы на мастер ветке?

gem 'refile', require: "refile/rails", git: 'https://github.com/refile/refile.git', branch: 'master'
Другие вопросы по тегам