Как именно вы интегрируете ckeditor с Paperclip, чтобы он мог загружать файлы изображений? - PullRequest
12 голосов
/ 06 сентября 2010

Как заставить http://github.com/galetahub/rails-ckeditor работать, чтобы вы могли загружать файлы изображений? Я не думаю, что буду использовать хранилище s3 ...

любая помощь будет оценена.

Ответы [ 5 ]

7 голосов
/ 29 ноября 2010

Да, вы можете. Я предполагаю, что у вас уже есть скрепка для S3. Таким образом, вам нужно только отредактировать файл picture.rb и attachement_file.rb в каталоге модели (app / model / ckeditor /) и заменить эти строки

  has_attached_file :data,
                    :url => "/ckeditor_assets/attachments/:id/:filename",
                    :path => ":rails_root/public/ckeditor_assets/attachments/:id/:filename"

с вашей версией papeclip has_attached_file:

  has_attached_file :data, :styles => { :content => '575>', :thumb => '80x80#' },
    :storage => :s3, :s3_credentials => "#{Rails.root}/config/s3.yml", :path => ":attachment/:id/:style.:extension",
    :url => ":s3_domain_url"

Вот и все. Кстати: это пример из Rails 3.

2 голосов
/ 05 мая 2017

Решение Rails 4.2.0:

Как заставить http://github.com/galetahub/rails-ckeditor работать, чтобы вы могли загружать файлы изображений?

Как таковой, CKEditor позволяет встраивать существующие URL-адреса изображений, но для того, чтобы CKEditor и Paperclip работали вместе, чтобы вы могли загружать изображения, вам потребуется ImageMagick. Как я понимаю, он обрабатывает загрузку данных изображения, делая ссылку на изображение URL для загруженных данных изображения и встраивая URL загруженных данных изображения.


CKEditor

Добавьте gem "ckeditor" в свой Gemfile

, затем выполните команду $ bundle install.


Добавьте это в /app/assets/javascripts/application.js

.
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require ckeditor/init  <--------------- THIS
//= require_tree . <----------------------- ABOVE THIS

за: https://github.com/galetahub/ckeditor#how-to-generate-models-to-store-uploaded-files

Добавить это к:

/ конфигурации / routes.rb
Я поставил его перед resources, который использует

mount Ckeditor::Engine => '/ckeditor'  

Использование « form_for » и настройка модели «Статья» с заголовком: строка и текст: текст /app/views/articles/_form.html.erb

  <p>
    <%= f.label :text %><br>
    <%= f.cktext_area :text, rows: 10  %> # <-------- "cktext_area"
  </p>

Использование " simple_form_for "

  <div class="form-group">
    <%= f.input :body, :as => :ckeditor, input_html: {:ckeditor => {:toolbar => 'FULL'}}, class: "form-control" %>
  </div>

Скрепка

за: https://richonrails.com/articles/getting-started-with-ckeditor

Добавьте gem "paperclip" к вашему Gemfile и $ bundle install.

Затем выполните следующие две команды:

$ rails generate ckeditor:install --orm=active_record --backend=paperclip

и

$ rake db:migrate


ImageMagick

Для macOS Sierra:

$ brew install imagemagick

Для других вариантов установки ImageMagick: https://www.imagemagick.org/script/install-source.php

2 голосов
/ 29 июня 2011

Я бы следовал README для упомянутого вами плагина rails-ckeditor. Если вам не нужна загрузка SWFUp, вы можете просто интегрировать CKEditor и Paperclip , написав пользовательский загрузчик файлов и специальный файловый браузер, и подключить их к редактору, указав URL-адреса и функции обратного вызова.

Всегда полезно иметь пример, автор создал пример приложения . К сожалению, в этом есть несколько ошибок. Рассмотрим следующие моменты, чтобы запустить его

  1. изменить следующие строки в config/environment.rb

    config.gem 'paperclip', :version => '2.3.3'

    config.gem 'ckeditor', :version => '3.4.1'

  2. удалить файл index.html публично

  3. добавить корневой маршрут в config / rout.rb

    map.root :controller => "pages"

1 голос
/ 17 февраля 2016

Используйте следующие вещи, это работает для меня, но у вас должна быть учетная запись на Amazon для хранения s3 и правильная конечная точка, на которую вы можете ссылаться, следующие

code.`gem 'aws-sdk', '~> 2'
gem 'aws-s3'
gem 'aws-sdk-v1'
gem 'paperclip'

class Ckeditor::Picture < Ckeditor::Asset

  AWS_CONFIG = YAML.load(ERB.new(File.read("#{Rails.root}/config/aws.yml")).result)[Rails.env]

  has_attached_file :data,
                    s3_credentials: {
                        access_key_id: AWS_CONFIG['access_key_id'],
                        secret_access_key: AWS_CONFIG['secret_access_key'],
                        bucket: AWS_CONFIG['bucket'],
                    },
                    s3_host_name: 's3.amazonaws.com',
                    :s3_endpoint => 's3.amazonaws.com',
                    storage: :s3,
                    s3_headers:     { "Cache-Control" => "max-age=31557600" },
                    s3_protocol:    "https",
                    bucket:         AWS_CONFIG['bucket'],
                    url: ':s3_domain_url',
                    path: '/:class/:attachment/:id_partition/:style/:filename',
                    default_url:   "/:class/:attachment/:id/:style/:basename.:extension",
                    default_style: "medium"

  validates_attachment_size :data, :less_than => 2.megabytes
  validates_attachment_presence :data

  def url_content
    url(:content)
  end
end

`

комментировать эту строку require "ckeditor/orm/active_record" из/ config / initializers

наконец поместил эту строку в <%= f.cktext_area :body %> файл просмотра.

0 голосов
/ 24 января 2013

В дополнение к ответу Запарки мне пришлось удалить # {Rails.root}, так как я получал унифицированную постоянную ошибку. Поэтому вместо этого я поставил "/config/s3.yml", и это сработало.

...