首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >CKeditor上传到S3,但在编辑器中不可访问- RAILS - Carrierwave

CKeditor上传到S3,但在编辑器中不可访问- RAILS - Carrierwave
EN

Stack Overflow用户
提问于 2018-03-16 08:08:10
回答 1查看 997关注 0票数 0

rails 5.1.4 ruby 2.4.1 ckeditor 4.2.4 carrierwave 1.2.2 minimagick 4.8.0雾-aws 2.0.1

我有carrierwave支持的ckeditor,它连接到一个S3存储桶上。镜像正在上传到S3存储桶中。我能看到里面的文件!但是ckeditor屏幕冻结了,这是heroku logs..rails服务器的输出给出了同样的错误。这绝对是一个ckeditor配置问题,因为我可以通过照片上传程序上传封面照片,其中ckeditor不是中间人。它只是一个使用carrierwave和S3的html文件字段。我能够回想起封面照片并将其从S3存储桶中显示出来,因此我知道我的凭据是好的。

HEROKU日志:

Started POST "/ckeditor/pictures?&CKEditor=ckeditor&CKEditorFuncNum=1&langCode=en" for IP ADDRESS

Processing by Ckeditor::PicturesController#create as HTML

Parameters: {"upload"=>#<ActionDispatch::Http::UploadedFile:0x000000038f2868 @tempfile=#<Tempfile:/tmp/RackMultipart20180315-4-1xodi16.jpg>, @original_filename="coloursquare.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"upload\"; filename=\"coloursquare.jpg\"\r\nContent-Type: image/jpeg\r\n">, "ckCsrfToken"=>"56COpAWYrezg8OINmQYCmH6Hr1I5ZVxy1u9YtFmP", "CKEditor"=>"ckeditor", "CKEditorFuncNum"=>"1", "langCode"=>"en"}

DEBUG -- 

DEBUG -- SQL INSERT INTO "ckeditor_assets" ("data_file_name", "data_content_type", "data_file_size", "type", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6) RETURNING "id"[0m  [["data_file_name", "coloursquare.jpg"], ["data_content_type", "image/jpeg"], ["data_file_size", 12893], ["type", "Ckeditor::Picture"], ["created_at", "2018-03-15 23:25:06.970758"], ["updated_at", "2018-03-15 23:25:06.970758"]]

heroku[router]: at=info method=POST path="/ckeditor/pictures?&CKEditor=ckeditor&CKEditorFuncNum=1&langCode=en" host=stormy-hollows-12083.herokuapp.com request_id=0e9fd60d-685e-4cd5-9296-413b68e0bf45 fwd="73.96.105.72" dyno=web.1 connect=0ms service=274ms status=500 bytes=1825 protocol=https

DEBUG -- COMMIT

INFO -- Completed 401 Unauthorized in 261ms (ActiveRecord: 27.2ms)

FATAL -- 

FATAL -- : ArgumentError (Version content doesn't exist!):

FATAL --  

FATAL -- : app/models/ckeditor/asset.rb:4:in `url'

app/models/ckeditor/picture.rb:5:in `url_content'

CKEDITOR图片UPLOADER.rb

class CkeditorPictureUploader < CarrierWave::Uploader::Base
  include Ckeditor::Backend::CarrierWave  
  include CarrierWave::MiniMagick

  storage :fog

  def store_dir
    "uploads/ckeditor/pictures/#{model.id}"
  end

  def default_url
    "/images/fallback/" + [version_name, "default.png"].compact.join('_')
  end

  def content_type_blacklist
    ['application/text', 'application/json']
  end

  def extension_white_list
    Ckeditor.image_file_types
  end

  def content_type_blacklist
    ['application/text', 'application/json']
  end
end

检查器config.js

CKEDITOR.editorConfig = function( config ) {
  config.language = 'en';
  config.uiColor = '#ffffff';
  config.pasteFromWordRemoveStyles = false;
  config.filebrowserBrowseUrl = "/ckeditor/attachment_files";
  config.filebrowserFlashBrowseUrl = "/ckeditor/attachment_files";
  config.filebrowserFlashUploadUrl = "/ckeditor/attachment_files";
  config.filebrowserImageBrowseLinkUrl = "/ckeditor/pictures";
  config.filebrowserImageBrowseUrl = "/ckeditor/pictures";
  config.filebrowserImageUploadUrl = "/ckeditor/pictures?";
  config.filebrowserUploadUrl = "/ckeditor/attachment_files";
  config.allowedContent = true;
}

模型检查器asset.rb

class Ckeditor::Asset < ActiveRecord::Base
  include Ckeditor::Orm::ActiveRecord::AssetBase

  delegate :url, :current_path, :content_type, to: :data

  validates :data, presence: true
end

模型检查器picture.rb

class Ckeditor::Picture < Ckeditor::Asset
  mount_uploader :data, CkeditorPictureUploader, mount_on: :data_file_name

  def url_content
    url(:content)
  end
end
EN

回答 1

Stack Overflow用户

发布于 2018-06-09 03:06:57

我发现在Ckeditor::AssetResponse#asset_url方法中,asset对象不会重新加载,因此asset.content_url将始终为空,从而导致错误。我是这样修复的:

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

如果你有Ckeditor::AttachmentFile类,它也是一样的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49311268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档