0

我在 Rails 3 中有一个 Web 应用程序,它已经有一个多态回形针模型。我已经附加了几个模型。

我很快意识到我需要一个好的所见即所得的文本区域编辑器,我用回形针安装了 ckeditor gem,但它为 ckeditor::pictures 和资产生成了自己的模型。

有没有办法覆盖 gem 在 ckeditor 中寻找的模型,以便我可以将现有的多态回形针模型与 ckeditor 一起使用?

4

4 回答 4

2

我发现您不能告诉 gem ckeditor 使用您现有的回形针模型,您必须使用它生成的回形针模型或不使用编辑器。然后,您将不得不通过分叉并进行编辑来使用您当前和现有的回形针模型来对抗宝石。

如果您已经通过回形针或carrierwave 拥有现有的附件模型,我个人建议不要使用ckeditor gem。只需从他们的网站获取ckeditor javascript 文件并以这种方式实现编辑器。

您可以通过下载 javascript 文件来执行此操作,将它们放在您的 assets/javascript 目录中。然后将它们包含在您的 application.js 中

于 2012-05-29T17:46:17.153 回答
0

我知道这个问题有点老了,但现在有一种方法可以设置模型。您可以使用其中的设置来设置config/initializers/ckeditor.rb模型config.picture_modelconfig.attachment_file_model

于 2014-08-28T18:41:47.667 回答
0

使用 gem 本身提供的这个生成器:

rails generate ckeditor:install --orm=active_record --backend=paperclip
于 2012-05-17T00:21:50.293 回答
0

如果您将图片模型和附件文件模型更改为从基本模型继承:

class Ckeditor::Picture < Asset

end

并在您的基类中包含 Ckeditor:

class Asset < ApplicationRecord
  include Ckeditor::Orm::ActiveRecord::AssetBase
  include Ckeditor::Backend::Paperclip

  belongs_to :attachable, :polymorphic => true

  has_attached_file :data,
    storage: :s3,
    s3_region: S3_CONFIG["region"],
    path: "assets/:attachment/:id/:style.:extension",
    :styles => lambda { |a| a.instance.styles },
    s3_credentials: {
         access_key_id: S3_CONFIG["access_key_id"] ,
         secret_access_key: S3_CONFIG["secret_access_key"]
       },
    s3_protocol: 'http',
    bucket: S3_CONFIG["bucket"]
end

并在初始化程序(ckeditor.rb)中更改表名:

module Ckeditor
  module Orm
    module ActiveRecord
      module AssetBase
        def self.included(base)
          base.send(:include, Base::AssetBase::InstanceMethods)
          base.send(:extend, ClassMethods)
        end
        module ClassMethods
          def self.extended(base)
            base.class_eval do
              self.table_name = 'assets'
            end
          end
        end
      end
    end
  end
end

它似乎工作。

于 2017-07-14T18:39:23.323 回答