Я использую tinymce с gem 'tiny_mce'
и carrierwave
для загрузки изображения.
Моя настройка для tinymce следующая:
$(function() {
tinyMCE.init({
mode: "textareas",
editor_deselector: "plain",
theme: "advanced",
plugins: "advimage,inlinepopups,save,autosave",
external_image_list_url: '#{image_list_admin_static_images_url}',
relative_urls: false,
theme_advanced_buttons1: "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,formatselect",
theme_advanced_buttons22: "",
theme_advanced_buttons3: "",
theme_advanced_toolbar_location : "top",
theme_advanced_blockformats: "p,h2,h3,h4"
})
}
Важная часть image_list_admin_static_images_url
в моих маршрутах:
resources :static_images do
get :image_list, :on => :collection
end
Метод в StaticImagesController выглядит следующим образом:
def image_list
@image_list = "var tinyMCEImageList = #{StaticImage.image_list.to_json}"
render :js => @image_list
end
А в методе image_list, расположенном в модели:
def self.image_list
all.map{ |im| [im.alt, im.image.url] }
end
Эта настройка отлично работает для меня, и вам нужно настроить ее под свои нужды. Надеюсь, что это поможет вам. TinyMCE - действительно хороший и мощный редактор wysiwyg.
Как chech
предложено в разделе комментариев, вот как вы можете настроить это решение для использования с active_admin
:
Чтобы использовать его внутри активного администратора, просто замените маршрут на этот:
match "admin/model_name/:id/js_image_list", :action => "js_image_list", :controller => "admin/model_name"
. Затем создайте действие с именем js_image_list
внутри активного файла модели администратора. Конфигурация для tinyMCE.init: external_image_list_url : "js_image_list"