Активный администратор / загрузка нескольких изображений Carrierwave
Я боролся уже неделю, я пытаюсь создать форму внутри active_admin, где пользователь может выбрать несколько картинок, добавить описание и заголовок, а затем отправить свою форму, чтобы создать нечто, похожее на галерею
Пока у меня есть две модели, созданные с помощью команд:
rails g model Gallery title:string description:text
rails g model Image url:text #just in case the user has LOTS of images to upload
Вот как выглядят мои модели сейчас:
gallery.rb
class Gallery < ApplicationRecord
has_many :images
accepts_nested_attributes_for :images, allow_destroy: true
end
image.rb
class Image < ApplicationRecord
belongs_to :gallery
mount_uploader :image, ImageUploader #Using Carrier Wave
end
админ /gallery.rb
permit_params :title, :description, :images
form html: { multipart: true } do |f|
f.inputs do
f.input :title
f.input :description
f.input :images, as: :file, input_html: { multiple: true }
end
f.actions
end
Моя проблема в том, что, несмотря на то, что моя форма "изображения" отображается, мне не удается сохранить изображения с помощью другой модели, ничего не загружается в мою папку "public/upload", и ничего не записывается в моей базе данных.
Я не могу найти ничего интересного в интернете, который мог бы решить эту проблему
Не стесняйтесь просить другой файл
Любая помощь приветствуется
1 ответ
allow_params:title,:description,:images
Почему : изображения, я думаю, вы имели в виду images_attributes: [: url]?
Но это тоже не сработает. Я следовал за шагами здесь: https://github.com/carrierwaveuploader/carrierwave/issues/1653
Вы можете сделать это только с одной моделью
rails g model Gallery title:string description:text url:string
модели /gallery.rb
# your url is accepted as an array, that way you can attach many urls
serialize :url, Array
mount_uploaders :url, ImageUploader
Примечание: используйте serialize с Sqlite, для Postgres или какой-либо другой базой данных, способной обрабатывать массивы: read: добавить столбец массива в Rails
админ /gallery.rb
permit_params :title, :description, url: []
form html: { multipart: true } do |f|
f.inputs do
f.input :title
f.input :description
f.input :url, as: :file, input_html: { multiple: true }
end
f.actions
end