lest, just lest

Заметки о web-разработке, администрировании Linux и настройке Mac OS X

CKEditor в Ruby on Rails c загрузкой файлов через SWFUpload

2 комментариев

Достаточно часто появляется необходимость предоставить пользователям Вашего web-приложения возможность удобно редактировать содержимое. Для обычного пользователя оптимальным вариантом является использование WYSIWYG html-редактора. Таким решением является редактор CKEditor, интерфейс которого во многом подобен интерфейсам Microsoft Word и OpenOffice Writer.

CKEditor

Плагин rails-ckeditor предназначен для интеграции CKEditor'а в Rails-приложение. Также он включает в себя возможность загрузки изображений и файлов из интерфейса редактора через SWFUpload.

Первым шагом для начала использования CKEditor'а является установка плагина rails-ckeditor:

./script/plugin install git://github.com/galetahub/rails-ckeditor.git

Затем копируем необходимые файлы CKEditor'а и SWFUpload'а в директорию public/ с помощью команды:

rake ckeditor:install

Генерируем пример конфигурационного файла плагина:

rake ckeditor:config

В результате появится файл config/ckeditor.yml, который стоит немного отредактировать:

---
options: &options
 swf_file_post_name: "data"

 swf_image_file_types_description: "Images"
 swf_image_file_types: "*.jpg;*.jpeg;*.png;*.gif"
 swf_image_file_size_limit: "5 MB"
 swf_image_file_upload_limit: 10

 swf_types_description: "Files"
 swf_file_types: "*.doc;*.wpd;*.pdf;*.swf;*.xls"
 swf_file_size_limit: "10 MB"
 swf_file_file_upload_limit: 5

 public_uri: "/system/ckeditor"
 public_path: "system/ckeditor"

 file_manager_uri: "/ckeditor/files"
 file_manager_upload_uri: "/ckeditor/create?kind=file"

 file_manager_image_upload_uri: "/ckeditor/create?kind=image"
 file_manager_image_uri: "/ckeditor/images"

development:
  <<: *options

production:
  <<: *options

Для загрузки файлов и изображений плагин rails-ckeditor требует наличия моделей Asset, AttachmentFile и Picture. В качестве примера этих моделей можно использовать мой gist, в этом случае необходимо установить гем paperclip (gem install paperclip) и подключить его в config/environment.rb (config.gem 'paperclip').

После создания моделей, генерируем новую миграцию create_assets:

./script/generate migration create_assets

В ней создаем таблицу assets, в которой будет храниться информация о загруженных файлах и изображениях:

class CreateAssets < ActiveRecord::Migration
  def self.up
    create_table :assets do |t|
      t.string  :data_file_name
      t.string  :data_content_type
      t.integer :data_file_size

      t.integer :assetable_id
      t.string  :assetable_type, :limit=>25
      t.string  :type, :limit=>25

      t.integer :user_id

      t.timestamps
    end

    add_index "assets", ["assetable_id", "assetable_type", "type"], :name => "ndx_type_assetable"
    add_index "assets", ["assetable_id", "assetable_type"], :name => "fk_assets"
    add_index "assets", ["user_id"], :name => "fk_user"
  end

  def self.down
    drop_table :assets
  end
end

Выполняем созданную миграцию:

rake db:migrate

В случае если дефолтный роут map.connect ':controller/:action/:id' отключен, то в config/routes.rb необходимо добавить следующий роут:

map.connect ':controller/:action/:id', :controller => /ckeditor.*/

Для использования CKEditor добавляем на страницу подключение необходимого javascript файла:

<%= javascript_include_tag :ckeditor %>

Вставлять CKEditor на форме можно с помощью FormBuilder хелперов, например:

<% form_for @page do |form| %>
  ...
  <%= form.cktext_area :notes, :toolbar=>'Full', :width=>'400px', :heigth=>'200px' %>
  ...
  <%= form.cktext_area :content, :swf_params=>{:assetable_type=>'User', :assetable_id=>current_user.id} %>
  ...
<% end %>

Related posts:

  1. Cron и Ruby: использование Whenever
  2. Использование Sinatra внутри Rails Metal
  3. Hello world с помощью Ruby, Sinatra и Haml
  4. Sinatra и DataMapper: пример сервиса сокращения ссылок
  5. Bdoc и Hanna – удобный просмотр документации RubyGems

Автор: lest

Май 12, 2010 в 19:01

Опубликовано в ruby

Метки: , , , , , ,

2 Responses to 'CKEditor в Ruby on Rails c загрузкой файлов через SWFUpload'

Subscribe to comments with RSS or TrackBack to 'CKEditor в Ruby on Rails c загрузкой файлов через SWFUpload'.

  1. Дякую за перегляд плагіну. Хочу нагадати, що доступна версія для Rails 3 http://github.com/galetahub/rails-ckeditor/tree/rails3.

    Також незабаром зроблю генерацію моделей для завантаження «create_assets» та пройдусь по багам.

    Igor Galeta

    13 Май 10 at 15:47

  2. http://github.com/woto/blog Я у себя в блоге использовал этот плагин.

    woto

    17 Май 10 at 18:57

Leave a Reply