2012-03-14 107 views
5

类似整合的CKEditor到Integrating CKEditor with Rails 3.1 Asset Pipline使用Rails 3.2

我想ckeditorrails 3.2应用程序集成。

我已将所有ckeditor文件复制到/app/assets/javascripts/ckeditor/*下。

我有以下行我application.jsapplication.js包括在我的布局文件:

//= require jquery 
//= require jquery_ujs 
//= require ckeditor/ckeditor 
//= require_self 

采取它的答案Integrating CKEditor with Rails 3.1 Asset Pipline

我可以理解,我需要补充的东西如:

config.assets.precompile += your_files 

我的development.rb文件当应用程序加载时,所有的ckeditor文件都会被预编译。

虽然我尝试了几个路径,不工作,我不断收到以下错误:

error on page view and the text area is not shown at all

有人能告诉我正确的正规表示法,以包括预编译的所有文件,请?

回答

16

我遇到同样的问题,发现solution.Go以下链接: http://docs.cksource.com/CKEditor_3.x/Developers_Guide/Specifying_the_Editor_Path

<script type="text/javascript"> 
var CKEDITOR_BASEPATH = '/assets/ckeditor/'; 
</script> 
<%= javascript_include_tag "application" %> 

你不需要设置任何config.assets.precompile。

+0

澄清后人:它通过CKEditor的情况下替换文字区域的CKEditor要科幻nd本身,但因为所有的javascript都被编译成一个文件(application.js),所以它不能再找到它,所以它搜索一个名为ckeditor_basepath的变量。 – 2012-09-12 18:51:07

+1

在4.x中,应该是CKEDITOR.basePath – bobzsj87 2014-01-01 14:55:16

0

关于这个问题最近有很多帖子,但是他们都没有(包括像上面提到的那样定义BASEPATH)为我工作,所以我认为这可能对某些人有帮助。

我通过与路径

〜/ .rvm /宝石/红宝石1.9.3x /宝石/ CKEditor的-3.7.0.rc3 ( 'X' 号是从目录中复制文件解决了这个问题应用程序特定的,你的会不同)

到目录/ assets/javascript。

然后,我可以在config.js文件中编辑工具栏的配置,使编辑器具有我想要的选项。这对我来说是完美的,因为我总是希望在这个应用程序中有相同的选项。

UPDATE

我现在有它的资产管道,它属于config.js文件的工作,但居住在我的.rvm宝石的CKEditor的代码的复位。我认为这是一个冲突,因为我试图重新定义他们的工具栏,名为“Easy”。当我做了一个新的工具栏&设置一个是活动的,管道似乎工作正常。

2

我用这个指南添加的CKEditor中启用了与资产管道的Rails 3.2 activeadmin: https://github.com/gregbell/active_admin/wiki/CKEditor-integration

它的工作就像一个魅力。

我做的唯一额外的事情是这行添加到我的环境:

config.assets.precompile += ['active_admin.css', 'active_admin.js', 'ckeditor/init.js'] 
+0

当我按照这个按钮样式搞砸了,就像建议在指南中发生的那样 - 但这两个“修复”都不适用于我 - 总是有越来越多的做... – 2013-03-28 15:57:52

1

我有一个类似的,而试图在Rails 3.1应用程序,而资产管道多个样式表和JavaScript的结合为一体,使用stylesheet_link_tag和javascript_include_tag与缓存选项。在这种情况下,文件并不总是以正确的顺序加载,其他ckeditor文件(如配置文件“config.js”)和语言文件(如“lang/en.js”)的路径没有明确定义。这意味着您将在检索它们时收到其他附加的“NetworkError:404 Not Found”错误,并且配置和语言文件不可用,这会导致更严重的错误,如上面提到的Uncaught TypeError: Cannot read property 'options' of undefined

使用Javascript超时并没有帮助,并且设置CKEDITOR_BASEPATH也没有帮助,至少如果您在编辑器加载之前在application.js中定义它,就像我那样(可能顺序在这里吗?) 。为了使其工作,可以提取从普通高速缓存文件的CKEditor的的JavaScript(或把它拿出来的资产管道)和文件的其余部分与

<%= javascript_include_tag 'ckeditor/ckeditor.js' %> 
0

后seperately加载它,我这个问题打几个小时,但问题不是CKEditor,而是我的代码。我将ckeditor.js脚本包含在我的部分视图中,该视图是通过AJAX呈现的,是的,您猜对了,没有工作。一旦我移动了包括主布局(_Layout)在内的脚本,问题就解决了。当然,这发生在我工作于ASP.NET MVC。对于其他Web框架,我没有解决方案。

1

ckeditor with rails 3.2的问题是javascript库路径无法加载生产环境,因此我们需要正确修改路径。 我下面的步骤:

在application.html.erb

<%= javascript_include_tag "application" , '/assets/ckeditor/ckeditor.js', '/assets/ckeditor/init.js'%> 

在production.rb文件

config.assets.precompile += %w(ckeditor/init.js) 

运行资产

rake assets:precompile:all 

这些步骤,工作对我来说导轨版本3.2.8

1

这只是一个补充。我想这一切,并没有为我工作,所以我所做的就是我的CKEditor宝石变为gem 'ckeditor'

,并将此向我​​的application.js

//= require ckeditor/init 

然后预编译我的资产,我加入这对我的生产。RB文件

config.assets.precompile += Ckeditor.assets 

而这一切,像变魔术一样

4

轨3.2 FIX:

    资产/ JavaScript的
  1. /application.js中
    ... blablabla ... 
    //= require ckeditor_fix  #- add this line 
    //= require ckeditor/init 
    //= require_tree .
  2. 资产
  3. /JavaScript的创建新的文件ckeditor_fix .js
    var CKEDITOR_BASEPATH = '/assets/ckeditor/';
+0

这并不适用于我,但将ckeditor gem从3.7.1升级到3.7.3已经工作 – 2013-06-13 20:59:30

0

有类似的问题。对我来说,它是通过覆盖默认预编译任务(我使用Rails 4和CkEditor 4)来修复的。

  1. 添加到application.rb中config.assets.precompile += ['ckeditor/*']
  2. 在application.js中//= require ckeditor/init
  3. 从这个答案创建文件lib/tasks/precompile_hook和粘贴文本Precompile hook
1

步骤1:添加gem 'paperclip'gem "ckeditor"在的Gemfile。

步骤2:捆绑安装。

步骤3:rails generate ckeditor:install --orm=active_record --backend=paperclip

步骤4:地点config.autoload_paths += %W(#{config.root}/app/models/ckeditor) in application.rb

步骤5:地点mount Ckeditor::Engine => "/ckeditor"如果不存在已经和运行db:migrate

步骤6:打开application.html.erb并把这个<%= javascript_include_tag 'ckeditor/ckeditor.js' %>放在他里面阿德。

步骤7:在application.html.erb

<script type="text/javascript"> 
    $(document).ready(function() { 
    if ($('textarea').length > 0) { 
     var data = $('textarea'); 
     $.each(data, function(i) { 
      CKEDITOR.replace(data[i].id); 
     }); 
    } 
}); 
</script> 

步骤8将这个在页脚(body标签以上):重新启动WEBrick服务器。 就是这样。

2

最后一个简单的工作解决方案。

下载CKEditor Zip file,提取文件并将其放置在子目录“的JavaScript/CKEditor的”,主要JS文件添加到布局..

javascript_include_tag 'ckeditor/ckeditor.js' 

..和写的有点JavaScript代码

$(document).ready(function() { 
    if ($('textarea').length > 0) {  
    var data = $('textarea'); 
    $.each(data, function(i) { 
     CKEDITOR.replace(data[i].id); 
    });  
    } 
}); 

信用Source

+0

老实说,所有的gem解决方案都不是最好的。这是最简单的解决方案,因为它避免了预编译巨大的CKEditor库。 (如果你想缩小它,你应该只做一次,因为它永远不会改变。)另外,更简单的,你可以使用CKEditor的CDN:https://cdn.ckeditor.com/。 – thekingoftruth 2015-01-28 02:32:03