Rails Integration for TinyMCE
tinymce-rails gem integrates the TinyMCE editor with the Rails asset pipeline.
This gem is compatible with Rails 3.1.1 and higher (including Rails 4).
This is the branch for TinyMCE 4. For TinyMCE 3.5.x, please see the tinymce-3 branch.
New in 3.5.11, 4.1.10 and 4.2.1: Alternative asset installation methods (copy vs compile/symlink). See the Asset Compilation section below for details.
tinymce-rails to your Gemfile
Be sure to add to the global group, not the
assets group. Then run
2. Create a
config/tinymce.yml file with your global configuration options:
toolbar: - styleselect | bold italic | undo redo - image | link plugins: - image - link
The Rails server no longer needs to be restarted when this file is updated in development mode.
To define multiple configuration sets, follow this syntax (a default configuration must be specified):
default: plugins: - image - link alternate: selector: textarea.table-editor toolbar: styleselect | bold italic | undo redo | table plugins: - table
See the TinyMCE 4 Documentation for a full list of configuration options.
3. Include the TinyMCE assets
Use one of the following options to include TinyMCE assets.
(1) Add to your application.js:
//= require tinymce
or (2) with jQuery integration:
//= require tinymce-jquery
(3) The TinyMCE assets can be included on a per-page basis using the
4. Initialize TinyMCE
For each textarea that you want to use with TinyMCE, add the "tinymce" class and ensure it has a unique ID:
<%= text_area_tag :content, "", :class => "tinymce", :rows => 40, :cols => 120 %>
or if you are using Rails' form builders:
<%= f.text_area :content, :class => "tinymce", :rows => 40, :cols => 120 %>
Then invoke the
tinymce helper to initialize TinyMCE:
<%= tinymce %>
Custom options can be passed to
tinymce to override the global options specified in
<%= tinymce :theme => "simple", :language => "de", :plugins => ["wordcount", "paste"] %>
Alternate configurations defined in 'config/tinymce.yml' can be used with:
<%= tinymce :alternate %>
See the tinymce-rails-langs gem for additional language packs for TinyMCE.
tinymce helper and global configuration file is entirely optional. The
tinyMCE.init function can be invoked manually if desired.
Since TinyMCE loads most of its files dynamically, some workarounds are required to ensure that the TinyMCE asset files are accessible using non-digested filenames.
As of tinymce-rails 3.5.11, 4.1.10 and 4.2.1, two alternative asset installation methods are available, which can be changed by setting
config.tinymce.install within your
config/application.rb file. These methods are called when you run
rake asset:precompile (via
Rake::Task#enhance) after the regular application assets are compiled.
The default method (as of 4.5.2),
compile, adds the TinyMCE paths to the Sprockets precompilation paths and then creates symlinks from the non-digested filenames to their digested versions.
config.tinymce.install = :compile
If you experience issues with the
compile method, you may wish to use the
copy method instead, which copies the TinyMCE assets directly into
public/assets and appends the file information into the asset manifest.
config.tinymce.install = :copy
If you are including TinyMCE via
application.js or using the
tinymce_assets helper, you do not need to manually alter the precompile paths. However if you wish to include
tinymce-jquery.js independently (i.e. using
config.assets.precompile << "tinymce-jquery.js"
Custom Plugins & Skins
To use custom plugins or skins, simply add the files to your asset load path so that they are locatable at a path beneath
For example, a plugin called
mycustomplugin could have its main JS file at
You should also ensure that your custom paths are added to the asset precompile paths.
Using tinymce-rails as an Engine Dependency
Ensure that you explicitly require
tinymce-rails within your engine file. Including tinymce-rails as a dependency in your gemspec is not enough.
When new versions of TinyMCE are released, simply update the
tinymce-rails gem to the latest version. There is no need to run any extra rake tasks (apart from