0

Rails 3に、すでにポリモーフィックペーパークリップモデルを備えたWebアプリケーションがあります。すでにいくつかのモデルを取り付けています。

テキストエリアに優れたwysiwygエディターが必要であることにすぐに気付き、ペーパークリップ付きのckeditor gemをインストールしましたが、ckeditor::picturesとアセット用に独自のモデルが生成されます。

宝石がckeditorで探しているモデルをオーバーライドして、既存の多形ペーパークリップモデルをckeditorで使用できるようにする方法はありますか?

4

4 に答える 4

2

gem ckeditorに既存のペーパークリップモデルを使用するように指示することはできません。生成されたペーパークリップモデルを使用するか、エディターを使用しない必要があります。次に、宝石をフォークし、現在および既存のペーパークリップモデルを使用するように編集して、宝石と戦う必要があります。

ペーパークリップやキャリアウェーブを介した既存のアタッチメントモデルがすでにある場合は、個人的にckeditorgemを使用しないことをお勧めします。Webサイトからckeditorjavascriptファイルを取得し、その方法でエディターを実装するだけです。

これを行うには、javascriptファイルをダウンロードして、assets/javascriptディレクトリに配置します。次に、それらをapplication.jsに含めます

于 2012-05-29T17:46:17.153 に答える
0

gem自体が提供するこのジェネレーターを使用します。

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

この質問は少し古いことは知っていますが、モデルを設定する方法があります。モデルを設定するために使用できる設定config/initializers/ckeditor.rbconfig.picture_modelあります。config.attachment_file_model

于 2014-08-28T18:41:47.667 に答える
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 に答える