Экземпляр загрузчика Carrierwave on Rails 5.1 - PullRequest
0 голосов
/ 26 апреля 2018

Я следовал инструкциям несущей волны, я сделал rails generate uploader Attachment, но когда я делаю

uploader = AttachmentUploader.new
uploader.store!(my_file)

не загружает вложение my_file. Я не хочу хранить строку my_file в базе данных

1 Ответ

0 голосов
/ 26 апреля 2018

Если мы посмотрим на документацию CarrierWave

https://github.com/carrierwaveuploader/carrierwave/blob/master/README.md#multiple-file-uploads

Я буду использовать Продукт в качестве модели, я хочу добавить фотографии, в качестве примера. Получите главную ветку Carrierwave и добавьте ее в свой Gemfile:

  gem 'carrierwave', github:'carrierwaveuploader/carrierwave'

Создайте столбец в предполагаемой модели для размещения массива изображений:

rails generate migration AddPicturesToProducts pictures:json

Запустить миграцию

bundle exec rake db:migrate

Добавить фотографии к модели товара

app/models/product.rb

class Product < ActiveRecord::Base
  validates :name, presence: true
  mount_uploaders :pictures, PictureUploader
end

Добавление картинок к сильным парамам в ProductsController

app/controllers/products_controller.rb

def product_params
  params.require(:product).permit(:name, pictures: [])
end

Разрешить вашей форме принимать несколько фотографий

app/views/products/new.html.erb

# notice 'html: { multipart: true }'
<%= form_for @product, html: { multipart: true } do |f| %>
  <%= f.label :name %>
  <%= f.text_field :name %>

  # notice 'multiple: true'
  <%= f.label :pictures %>
  <%= f.file_field :pictures, multiple: true, accept: "image/jpeg, image/jpg, image/gif, image/png" %>

  <%= f.submit "Submit" %>
<% end %>

В ваших представлениях вы можете ссылаться на изображения, анализирующие массив картинок:

@product.pictures[1].url
...