我使用CarrierWave和Cloudinary将多张图片上传到我的博客帖子。我从浏览器上传它们。
使用post
形式的文件字段会发生这种情况。
<%=file_field_tag "images[]", type: :file, multiple: true %>
提交表单时,会为每个图像创建一个picture
实例,并将图像上传到Cloudinary。
def create
@post = Post.new(post_params)
if @post.save
if params[:images]
params[:images].each do |image|
@post.pictures.create(image: image)
Cloudinary::Uploader.upload(image)
end
end
end
end
我使用的ImageUploader几乎是默认的(包括cloudinary插件在内)
class ImageUploader < CarrierWave::Uploader::Base
include Cloudinary::CarrierWave
storage :file
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
end
现在,图像正在保存到我的服务器,图像正在上传到cloudinary。但不知怎的,public_id's
永远不会匹配。有谁知道为什么不呢?我致电public_id
时是否创建了新的Cloudinary::Uploader.upload(image)
?
答案 0 :(得分:2)
在检查了项目Tal Lev-Ami(非常感谢这个!)之后,我发现我的ImageUploader存在问题
storage :file
在评论完这一行之后,一切都运行良好(我不必手动上传我的图片)。如果有人理解为什么这条线造成了问题,请作为我的客人在此发布以供将来参考。