public_id在cloudinary和carrierwave之间不匹配

时间:2015-09-10 04:54:28

标签: ruby-on-rails carrierwave cloudinary

我使用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)

1 个答案:

答案 0 :(得分:2)

在检查了项目Tal Lev-Ami(非常感谢这个!)之后,我发现我的ImageUploader存在问题

storage :file

在评论完这一行之后,一切都运行良好(我不必手动上传我的图片)。如果有人理解为什么这条线造成了问题,请作为我的客人在此发布以供将来参考。