我真的很喜欢rails_admin,但我的客户不喜欢 CKEditor。这真的是这个宝石上所见即所得的唯一选择吗?有什么方法可以将tinyMCE与 rails_admin 一起使用?
4 回答
在努力让 CKEditor 在 RailsAdmin 中正常工作(在 Rails 3.1 上)之后,我使用了 tinymce:它运行良好并且在几分钟内完成:
在你的 gemfile 添加:
gem 'tinymce-rails'
再加上你在 rails_admin.js.erb 中包含一行:
require_asset 'tinymce-jquery'
在执行此操作之前,您可能需要将整个文件(rails_admin.js.erb)
从 gem 复制到/assets/javascripts/rails_admin/
。
最后,您还需要在视图文件中添加一些 jquery
app/views/rails_admin/main/edit.html.haml
和app/views/rails_admin/main/new.html.haml
:javascript
jQuery(function() {
jQuery('textarea').tinymce({
theme: 'advanced'
});
});
这会将所见即所得添加到所有文本区域字段。
伟大的 andistuder,我建议您的解决方案的修改版本。
rails_admin.js.erb
将gem 从 gem 复制到项目/assets/javascripts/rails_admin/
路径中。添加以下行:
...
require_asset 'tinymce-jquery'
%>
jQuery(function() {
jQuery('textarea').tinymce({
theme: 'advanced'
});
});
一切都会像魅力一样工作!
WYSIWYG 编辑器通常只是用 JavaScript 功能覆盖 HTML 文本区域元素。所以任何编辑都应该在理论上工作。您可以将代码中的引用替换为 tinyMCE,确保已正确安装所有文件,然后将 tinyMCE 设置为使用文本区域控件的 ID。
使用哪个客户端界面在文本区域中创建 HTML 不应该对后端编程产生影响。
我以稍微不同的方式实现了这一点,它适用于:
rails_admin (0.8.1)
tinymce-rails (4.4.1)
执行:
Gemfile
gem 'tinymce-rails'
app/assets/javascripts/rails_admin/custom/ui.js
//= require tinymce-jquery
var admin = {
initTinyMce: function() { tinyMCE.init({ selector: "textarea[name$='_html]'" }) }
}
$(function() {
admin.initTinyMce();
$(document).on('rails_admin.dom_ready', function() {
admin.initTinyMce();
});
});
解释
https://github.com/sferik/rails_admin/wiki/Theming-and-customization
- 建议
ui.js
位置 - 建议使用
rails_admin.dom_ready
https://github.com/sophlenz/tinymce-rails
//= require tinymce-jquery
:不需要红宝石插值,我喜欢使用清单文件
风俗:
- 我需要运行两次初始化,到目前为止一切都很好
- 选择器
textarea[name$='_html]'
将转换字段以 结尾的所有文本区域_html
,这就是我存储的内容,这就是我命名我的字段的方式