Если мы посмотрим на документацию 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