JP Smith
JP Smith

Reputation: 61

TinyMCE and ActiveAdmin for Rails

I am reacquainting myself with Rails and I am really liking Active Admin. I would like to get tinyMCE working with it for use in text areas. However, any instructions I find are incomplete. For some reason, I think that I am missing something really simple here.

So, for example, I have tinymce-rails installed (3.4.9) and followed the instructions (https://github.com/spohlenz/tinymce-rails). However, here's where I think I failed: actually initiating tinyMCE. According to the doc, I have two options:

  1. use the <%= tinymce %> helper or...
  2. initialize it like the following tinyMCE.init({ mode: 'textareas', theme: 'advanced' });

I tried adding the latter to my active_admin.js file to no avail.

If someone could guide me on this, I would be most appreciative.

Upvotes: 6

Views: 5790

Answers (2)

mcmaloney
mcmaloney

Reputation: 2394

I got it working doing the following things (outside of the install described at the repo)

In admin/my_class.rb:

ActiveAdmin.register MyClass do
  form do |f|
    f.inputs do 
      f.input :body, :input_html => { :class => "tinymce" }
    end
  end
end

In initializers/active_admin.rb:

...
config.register_javascript 'tinymce.js'

This was what actually got the tinymce.js script to show up in the head of the admin layout.

In javascripts/active_admin.js:

//= require active_admin/base
//= require tinymce

$(document).ready(function() {
  tinyMCE.init({
     mode: 'textareas',
     theme: 'advanced'
   });
});

After doing those things, that body input (text area) had a fully functioning editor on it.

Upvotes: 15

Sjors Branderhorst
Sjors Branderhorst

Reputation: 2182

Do your textarea inputs have a 'class' attribute or something that tinyMCE can hook into? Does it work from the javascript console (firefox/chrome)? Have you checked the presence of tinymce.js in the head(source) of your page.

I got it working with a form partial, and I had to give a class to the input element so tinymce could hook to it.

<%= f.input :literature_nld, :input_html => { :class => 'tinymce', :size => "80x4" } %>

Good luck

Upvotes: 0

Related Questions