如何在Rails中添加Tinymce中的自定义菜单选项

时间:2014-11-24 02:28:27

标签: ruby-on-rails tinymce tinymce-4 tinymce-rails

我正在为Tinymce使用tinymce-rails gem,我想添加自定义菜单选项。现在我正在做readme的宝石建议,如:

<%= f.input :content , :label => false ,  :placeholder => 'Content', input_html: {class: "tinymce"} %>
<%= tinymce %>

我正在使用simple-form

我想在编辑器中添加一个带有一系列选项的下拉列表(我有一个名称数组),当用户点击一个选项时,应该在编辑器的视图中插入所选名称。这些名字将是动态的。

我尝试将许多选项传递给初始化程序tinymce,但无法获得结果。

1 个答案:

答案 0 :(得分:0)

不是使用gem中的默认启动器,而是可以手动启动tinymce并同时创建菜单项:

http://www.tinymce.com/tryit/menuitem.php

这样的事情:

<script type="text/javascript">
    tinymce.init({
        selector: '.my-class textarea',
        toolbar: "styleselect | bold italic | mybutton",
        setup: function(editor) {
        <% @my_items.each_with_index do |name, index| %>
            editor.addMenuItem('<%= name %>', {
                text: '<%= name %>',
                context: 'tools',
                onclick: function() {
                    editor.insertContent('<%= name %>');
                }
            <%= index == (@my_items.count - 1) ? '});' : '}),' %>
        < % end %>   
    });
</script>

我们使用三元运算符根据名称索引选择正确的结束标记。

理论上你也可以在 config / tinymce.yml 文件中执行此操作,但由于动态性质,它并不真正合理。

您可能想要查看的其他内容是将菜单传递给activeEditor,如:

tinyMCE.activeEditor.controlManager.get('my_menu')