Я создаю рыночное веб-приложение, и для этого мне нужно несколько изображений продуктов для каждого продукта.
Я использую загрузчик Carrierwave и Cloudinary для управления изображениями, и, насколько я знаю, у меня естьсоблюдая документацию правильно.
Вот некоторые из ключей ...
Из схемы, создавая таблицу продуктов (я пробовал как с, так и без):
create_table "products", force: :cascade do |t|
(...)
t.json "photos", default: []
В простой форме:
<%= f.file_field :photos, multiple: true %>
<%= f.input :photos_cache, as: :hidden %>
В модели продукта:
class Product < ApplicationRecord
mount_uploaders :photos, PhotoUploader
В PhotoUploader
class PhotoUploader < CarrierWave::Uploader::Base
include Cloudinary::CarrierWave
end
В контроллере сильные параметры:
def new_product_params
params.require(:product).permit( (...) {photos: []})
Форма опубликована и новый экземпляр сохранен, все файлы загружены в Cloudinary, но только первое изображение из всех выбранных будет сохранено в экземпляре, а в строке - неожидаемый хэш / json.
Из консоли - до:
photos: []>
И после:
photos: "image/upload/v1545381249/fdw1ydn6d1latvtlbobr.jpg">
Я видел другие учебные пособия, которые имеют только поле изображениямассив и не JSON, но документ Carrierwaventation говорит, что нужно создать тип поля json.