Я хочу сохранить несколько изображений в моем проекте rails. Я мог бы отправлять данные в виде массива, чтобы проверить их как «params [: images]». Я хочу сохранить его как объект «пузырь», который имеет «заголовок», «изображение», «тело», «нижний колонтитул» в качестве поля. Однако, если я сохраню его как объект, я смог сохранить все поля, кроме изображения. Я хочу знать, в чем проблема, и получить несколько советов, чтобы сохранить ее в базе данных.
Когда я проверял params [: images], там был файл. Однако, если я попытался сохранить его как объект, такой как @bubble = Bubble.new ({header: header, image: params [: images] [i], body: body, footer: footer}), @ bubble.image isноль (нуль). Я сохранил другой объект с изображением в Amazon S3, и он работал.
(...)
var data = new FormData();
for(var i=0;i<this.bubble_array.length;i++){
data.append('headers[]', this.bubble_array[i].header)
data.append('images[]', this.bubble_array[i].hero)
data.append('bodies[]', this.bubble_array[i].body)
data.append('footers[]', this.bubble_array[i].footer)
}
data.append('bubble_num',this.bubble_array.length)
axios.post('api/bubbles',data)
.then((res)=>{
console.log(res.data)
},(error)=>{
console.log(error)
})
(...)
# bubbles_controller
def create
bubble_num = params[:bubble_num].to_i
for i in 0...bubble_num do
header = params[:headers][i]
image = params[:images][i]
body = params[:bodies][i]
footer = params[:footers][i]
puts "image"
puts image # in the console I can check the file in it
@bubble = Bubble.new({header: header, image: params[:images][i], body: body, footer: footer})
puts "@bubble.image"
puts @bubble.image # it is empty
@bubble.save # only image is empty
end
end
# bubble.rb (model)
class Bubble < ApplicationRecord
mount_uploader :image, ImageUploader
before_destroy :destroy_assets
def destroy_assets
self.image.remove! if self.image
self.save!
end
end