与Integrating CKEditor with Rails 3.1 Asset Pipline
类似我正在尝试将ckeditor
与我的rails 3.2
应用程序集成。
我在/app/assets/javascripts/ckeditor/*
下复制了所有ckeditor文件。
我的application.js
中有以下几行,application.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文件。
虽然我尝试了几条路径,但没有工作,我不断收到以下错误:
有人可以告诉我正确的常规表达,包括预编译的所有文件吗?
答案 0 :(得分:16)
我遇到了同样的问题并找到了解决方案。转到以下链接: 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。
答案 1 :(得分:4)
rails 3.2 fix:
... blablabla ... //= require ckeditor_fix #- add this line //= require ckeditor/init //= require_tree .
var CKEDITOR_BASEPATH = '/assets/ckeditor/';
答案 2 :(得分:2)
我使用本指南在启用资产管道的Rails 3.2中将ckeditor添加到activeadmin: https://github.com/gregbell/active_admin/wiki/CKEditor-integration
它就像一个魅力。
我做的唯一额外的事情是将这一行添加到我的环境中:
config.assets.precompile += ['active_admin.css', 'active_admin.js', 'ckeditor/init.js']
答案 3 :(得分:2)
请注意,其中许多答案都引用了ckeditor gem(https://github.com/galetahub/ckeditor/),而不仅仅是ckeditor项目(http://ckeditor.com),特别是在您看到对ckeditor / init.js文件的引用时。
ckeditor集成还有其他宝石,包括ckeditor-rails(https://github.com/tsechingho/ckeditor-rails),它是一种重量更轻,更简单的解决方案。
答案 4 :(得分:2)
最后一个简单易用的解决方案。
下载CKEditor Zip file,解压缩文件并将它们放在子目录“javascripts / ckeditor”中,将主JS文件添加到布局中。
javascript_include_tag 'ckeditor/ckeditor.js'
..并编写一些JavaScript代码,用CKEditor实例替换textareas:
$(document).ready(function() {
if ($('textarea').length > 0) {
var data = $('textarea');
$.each(data, function(i) {
CKEDITOR.replace(data[i].id);
});
}
});
信用Source
答案 5 :(得分:1)
带有rails 3.2的ckeditor问题是没有为生产环境加载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
这些步骤适用于我的rails版本3.2.8
答案 6 :(得分:1)
这只是一个补充。我尝试了所有这些并且它对我不起作用所以我做的是将我的ckeditor gem更改为gem 'ckeditor'
并将此添加到我的application.js
//= require ckeditor/init
然后为了预编译我的资产,我将其添加到我的production.rb文件
config.assets.precompile += Ckeditor.assets
这一切都像魔术一样工作
答案 7 :(得分:1)
第1步:在您的gemfile中添加gem 'paperclip'
和gem "ckeditor"
。
第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步:重新启动WEBrick SERVER。 就是这样。
答案 8 :(得分:0)
最近有很多关于这个主题的帖子,但是没有一个(包括如上所述定义BASEPATH)对我有用,所以我认为这可能对某些人有帮助。
我通过使用路径
复制目录中的文件来解决问题〜/ .rvm / gems / ruby-1.9.3x / gems / ckeditor-3.7.0.rc3 ('x'是特定应用的,你的不同)
到目录/ assets / javascript。
然后我能够编辑config.js文件中工具栏的配置,使编辑器具有我想要的选项。这对我来说非常合适,因为我总是想在这个应用程序中使用相同的选项。
更新
我现在让它使用属于它的资产管道中的config.js文件,但是重置了驻留在我的.rvm gemset中的ckeditor代码。我认为存在冲突,因为我试图重新定义他们的工具栏,名为“Easy”。当我制作一个新的工具栏&amp;设置一个是活动的,管道似乎工作正常。
答案 9 :(得分:0)
我尝试将多个样式表和javascripts组合成一个没有资产管道的Rails 3.1应用程序中的一个,使用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' %>
答案 10 :(得分:0)
我在这个问题上打了几个小时,但问题不在于CKEditor,而在于我的代码。我在我的局部视图中包含ckeditor.js
脚本,该脚本是通过 AJAX 呈现的,是的,你猜对了,不行。一旦我移动了包含在主布局(_Layout)内的脚本,问题就解决了。当然,在 ASP.NET MVC 中工作时,这发生在我身上。对于其他Web框架,我没有解决方案。
答案 11 :(得分:0)
有类似的问题。对我来说,它是通过覆盖默认的预编译任务来修复的(我使用了Rails 4和CkEditor 4)。
config.assets.precompile += ['ckeditor/*']
//= require ckeditor/init
lib/tasks/precompile_hook
并粘贴此回复Precompile hook