将CKEditor与Rails 3.1 Asset Pipline集成

bri*_*ker 14 ruby-on-rails ckeditor ruby-on-rails-3.1 asset-pipeline

我是资产管道的新手,刚刚从Rails 3.0迁移过来.我正在努力让CKEditor进入管道,但是它的所有宝石都不清楚它们是如何工作的,并且很少或没有使用说明.

我更愿意在不使用gem的情况下执行此操作,因为我似乎只需要将源文件放入vendor/assets目录然后将其包含在内application.js.我已经尝试过,但是,当我预编译并推向生产时,似乎没有找到某些文件(editor.css例如),并且编辑器根本没有显示(只是空白区域).

的application.js

//= require jquery
//= require jquery_ujs
//= require ckeditor/ckeditor
//= require_self
Run Code Online (Sandbox Code Playgroud)

这是源文件vendor/assets/javascript/ckeditor/,并指向ckeditor.js.我只是不确定从哪里开始.此代码在开发中工作正常,但在生产中不起作用.我rake assets:precompile在添加并提交git之前运行,然后推送到heroku.这是发生的客户端错误的屏幕截图

kel*_*smj 28

我得到了这个工作(部署在Heroku上),通过:

  1. 在vendor/assets/javascripts/ckeditor中包含ckeditor代码
  2. 添加config.assets.precompile += ['ckeditor/*']到我的production.rb
  3. 在包含application.js var CKEDITOR_BASEPATH = '/assets/ckeditor/';之前,在application.html.erb中设置ckeditor基本路径
  4. 在application.js中,包括 //= require ckeditor/ckeditor


sup*_*ary 10

咬紧牙关并使用宝石.这里有两个选择:

CKEditor引擎

https://github.com/galetahub/ckeditor.

它作为引擎运行,并在资产中包含自己的可安装CKEditor.它还公开了可以添加到资产路径的Ckeditor.assets.这引用了CKEditor所需的所有图像,插件,语言文件和各种垃圾.

它有处理图像上传的功能,它还可以很好地与ActiveAdmin集成.

CKEditor Rails

https://github.com/tsechingho/ckeditor-rails

这样做的更少,您将其包含在资产管道中,并为您完成剩下的工作.适用于所有基本用例,简单而且充足.

结果

我在实时项目中使用了这两个,并且都做了这个工作.如果您打算使用ActiveAdmin并且想要平稳骑行,请使用前者.如果您愿意,请使用后者.

CKEditor非常难看.保持它的长度,然后当你需要升级时,你可以换掉另一个.


Ric*_*lse 7

如果您使用的是Rails 3.1.0,则应升级到3.1.1.在此版本中,预编译rake任务将资产编译为原始文件名和消化文件名.这是第三方代码,管道感知不会仍然有效.

您需要将ckeditor目录及其所有子目录添加到预编译数组中,以便预编译任务知道编译它们.

config.assets.precompile += your_files

your_files可以是一个文件,正则表达式或过程的数组 - 无论是什么都需要捕获ckeditor文件的名称.我没有使用ckeditor来解决预编译需要进行的操作,所以如果你发布你想出的内容,其他人可能会很感激!

需要注意的一件事是,如果您为Web服务器上的/ assets目录设置了远期标头,则需要排除CKeditor目录.由于这些文件不会被指纹识别,因此当您更新CKeditor并且某些客户端未获取更新的代码时可能会出现问题,因为它们具有标记为仅在将来某个时间过期的缓存副本.