CKEditor / vendor库:它可以在供应商文件夹而不是公共文件夹中工作吗?

时间:2015-09-12 16:14:00

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

我有一个工作的编辑视图,我正在尝试添加CKEditor。我已经下载了CKEditor文件夹/文件并将它们放在my_app/vendor/assets/ckeditor/中。我正在使用Rails 4,此文件夹包含在资产管道中。对于application.js,我已添加//= require ckeditor.js并已添加到application.css @import "contents";

在我的编辑视图中,我(我想使用inline option):

<%= f.text_area :page, contenteditable: 'true' %>
<script>
  CKEDITOR.disableAutoInline = true;
  CKEDITOR.inline( 'image_page' );
</script>

问题:现在加载编辑视图时,文本字段不会显示为可编辑字段,而是显示为纯文本。没有办法编辑此文本,也没有CKEditor的标志。知道我做错了吗?

正在生成的页面源代码包括:

<textarea contenteditable="true" name="image[page]" id="image_page">
  Arbor cubo vel.
</textarea>
<script>
  CKEDITOR.disableAutoInline = true;
  CKEDITOR.inline( 'image_page' );
</script>

更新:我通过将CKEditor文件从供应商文件夹移动到公用文件夹来实现它。 有人可能会确认CKEditor是否与资产管道兼容吗?

如果可能,我宁愿将它放在供应商文件夹中。 This old post以及this one引用类似的内容(如果我将<% var CKEDITOR_BASEPATH = '/ckeditor/'; %>作为标题行放在application.html.erb我的应用程序崩溃时出现错误dynamic constant assignment '.freeze)。那些对CKEditor有更多经验的人能提供比这些旧帖子更明确的答案吗?

2 个答案:

答案 0 :(得分:1)

可能是在textarea完全加载到DOM之前,脚本正在执行。尝试使用post加载包装器到你的脚本,如jquery&#39; s:

$(function(){
   // ... your code
})

答案 1 :(得分:1)

尝试在ckeditor下添加vendor/assets/javascripts资源用于JavaScript文件,vendor/assets/stylesheets用于CSS文件(在这些文件夹中分隔ckeditor资产)

每当资产引用另一个资产时,使用asset-url帮助程序而不是url,以便通过资产管道提供此资产

您还需要在vendor....//require

中包含您要放入资产管道中import个文件夹的所有资产

一方面不是你可以使用ckeditor gem https://github.com/galetahub/ckeditor它会节省你很多时间,它也可以处理一些开箱即用的功能,如图片上传和ckeditor画廊