0

我正在尝试将 Ckeditor 与 Rails Admin 一起使用,我在其中使用 Carrierwave 和云存储作为 Cloudinary。完成所有我可以看到的设置后,CKeditor 能够将文件保存在本地存储中,然后它会创建一个 Cloudinary URL,其中应该实际存储图像。但问题是图像没有从该本地文件夹上传到 Cloudinary,而我的简单文件上传工作正常,没有任何问题。

我在这里遇到的另一个问题是 - 当我使用 Cloudinary 时,存储名称应该是什么?至于文件和 Amazon S3,我们有文件和 s3 的名称。

请回复。

谢谢

4

3 回答 3

3

Cloudinary 的 Ruby GEM 包含一个用于 CarrierWave 的插件,我们的许多客户都在使用该插件。我们不知道 Ckeditor 的特殊问题(但我们尚未对其进行测试)。

当您使用 Cloudinary 的 CarrierWave 插件时,只需添加include Cloudinary::CarrierWave到您的上传器类。它将 Cloudinary 定义为存储引擎和图像处理服务(两者都是基于云的)。只需在您的上传器类中注释掉该行。storage :file所有图像都将直接上传到 Cloudinary,所有转换后的版本都将使用 Cloudinary URL 生成。

请查看文档页面中的示例上传器代码:http: //cloudinary.com/documentation/rails_integration#carrierwave_upload

如果问题仍然存在,如果您可以共享您的上传程序代码,我们会帮助您确保正确定义它,这将有所帮助。

于 2012-09-24T16:40:35.783 回答
2

我也有ckeditor的问题。编辑您CkeditorAttachmentFileUploader的外观与此类似:

class CkeditorAttachmentFileUploader < CarrierWave::Uploader::Base
  include Ckeditor::Backend::CarrierWave
  include Cloudinary::CarrierWave

  [:extract_content_type, :extract_size, :extract_dimensions].each do |method|
    define_method :"#{method}_with_cloudinary" do
      send(:"#{method}_without_cloudinary") if self.file.is_a?(CarrierWave::SanitizedFile)
      {}
    end
    alias_method :"#{method}_without_cloudinary", method
    alias_method method, :"#{method}_with_cloudinary"
  end

  def extension_white_list
    Ckeditor.attachment_file_types
  end
end

之后,您会发现另一个错误。我发现在Ckeditor::AssetResponse#asset_url 方法中,asset对象没有重新加载,所以asset.content_url总是 nil 从而导致错误。我这样修复它:

class Ckeditor::Picture < Ckeditor::Asset
  ...
  def url_content
    url(:content) || begin
      if persisted?
        reload
        url(:content)
      end
    end
  end
end

Ckeditor::AttachmentFile如果你有它,同样适用于课堂。

于 2018-06-08T19:29:03.693 回答
1

确保删除对 CarrierWave.config.storage = :file 的所有引用

如果上传不起作用,则需要在几个地方执行此操作:

在 /config/initializers/carrierwave_init.rb 中删除所有引用:

config.storage = :file

在您的上传者中删除和引用排序:

storage :file
于 2013-04-12T02:04:22.050 回答