2011-09-14 11 views

Odpowiedz

6

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"

+0

To podejście nie działa z potokiem aktywów Rails 3.1. –

+0

dlaczego nie? gem 'tiny_mce' supprots rails 3.1 –

+0

Dokumentacja tiny_mce gem stwierdza, że ​​nie jest już obsługiwany i że 3.1 nie jest wyraźnie obsługiwany. –

1

Wygląda na to, że tinymce zdecydowanie wspierają tory 3.1. Oto link
http://rubygems.org/gems/tinymce-rails

Wszystko co musisz zrobić, to dodać następujące do Gemfile

gem 'tinymce-rails' 

Dostępne są następujące opcje, aby dodać do application.js w zależności od tego, czy chcesz używać jQuery lub nie

//= require tinymce-jquery 
//= require tinymce 

Osobiście wybrałem jquery tak I dodaje ten wiersz do pliku js.coffee odpowiadającą moim kontroler/widok

tinyMCE.init 
    mode: 'textareas', 
    theme: 'advanced' 

Jeśli nie chcesz używać jQuery można po prostu dodać ten skrypt do widoku

<script type="text/javascript"> 
    tinyMCE.init({ 
    mode: 'textareas', 
    theme: 'advanced' 
    }); 
</script>