ruby-on-rails - 使用 CarrierWave 上传多个文件作为数据库中的单个记录
问题描述
对不起,我被困住了。如何使用 CarrierWave 上传多个文件并一一保存?我不想有一个包含多个文件的数组,但每个文件都应该单独保存。我有一个接受多个文件的表格。但我只能找到将整个上传保存为一个条目的方法。如何从具有多个文件的参数创建单个对象?
谢谢你的帮助!
编辑:
这是我的控制器:
class ImagesController < ApplicationController
def new
@image = Image.new
end
def create
@image = Image.new(image_params)
if @image.save
flash[:primary] = "Image uploaded"
redirect_to images_path
else
render 'new'
end
end
def index
@images = Image.all
@categories = Category.all
end
private
def image_params
params.require(:image).permit({image: []}, :image_title, :image_file_size, :image_content_type, :image_description, :category_id, :image_creation_date, :image_uploader)
end
end
此代码有效。问题是我不知道如何迭代参数。我可以访问各个参数。但是我不能一一存储。
这是我的审判:
def create
image_params['image'].each do |img|
@image = Image.new(img)
@image.save
end
redirect_to images_path
end
错误是:
ArgumentError Exception: When assigning attributes, you must pass a hash as an argument, ActionDispatch::Http::UploadedFile passed.
我知道我没有哈希,只有单个文件,这是错误。但我不知道该怎么做。