Używam tinymce z gem 'tiny_mce'
i carrierwave
do przesyłania zdjęć. Moja konfiguracja dla TinyMCE jest następujące:
$(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"
})
}
Ważną częścią jest image_list_admin_static_images_url
w moich trasach mam:
resources :static_images do
get :image_list, :on => :collection
end
Sposób StaticImagesController wygląda następująco:
def image_list
@image_list = "var tinyMCEImageList = #{StaticImage.image_list.to_json}"
render :js => @image_list
end
A w metodzie image_list znajduje się w modelu:
def self.image_list
all.map{ |im| [im.alt, im.image.url] }
end
Ta konfiguracja działa doskonale dla mnie, ofc musisz dostosować do własnych potrzeb. Mam nadzieję, że to ci pomoże. TinyMCE to naprawdę fajny i potężny edytor WYSIWYG.
Jak chech
sugerowane w komentarzach, oto jak można dostosować to rozwiązanie do stosowania z active_admin
:
go używać wewnątrz aktywnego administrator po prostu zastąpić drogę do tego: match "admin/model_name/:id/js_image_list", :action => "js_image_list", :controller => "admin/model_name"
. Następnie utwórz czynność o nazwie js_image_list
w aktywnym pliku modelu administratora. Konfiguracja dla tinyMCE.init to: external_image_list_url : "js_image_list"
To podejście nie działa z potokiem aktywów Rails 3.1. –
dlaczego nie? gem 'tiny_mce' supprots rails 3.1 –
Dokumentacja tiny_mce gem stwierdza, że nie jest już obsługiwany i że 3.1 nie jest wyraźnie obsługiwany. –