弃用警告:资产管道中不存在资产“ ckeditor.js”。回退到公用文件夹中的资产

时间:2018-12-18 02:19:34

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

我最近更新到Rails 5.2.2(从4.2.3开始),现在我在使用CKEditor gem的页面日志中收到此警告。

  

不建议使用警告:资产管道中不存在资产“ ckeditor.js”。回退到公用文件夹中的资产。   此行为已弃用,将被删除。   要绕开资产管道并保持这种行为,   使用skip_pipeline: true选项。

这是一行:

<%= javascript_include_tag :ckeditor %>

我尝试添加skip_pipeline: true,但随后它开始请求“ /javascripts/ckeditor.js”,但出现404错误。

无论哪种方式,CKEditor都可以工作,并且文本字段为RTF。我的application.js

中有这行
 //= require ckeditor/init

即使没有javascript_include_tag,它也可以工作。我感觉以前的开发人员认为CKEditor是一个大型库,只想将其包含在需要它的管理员的特定页面上。如何实现?

2 个答案:

答案 0 :(得分:0)

这有效

<%= javascript_include_tag 'ckeditor/init' %>

我也注释掉了应用清单中的那一行

// only load on required pages // require ckeditor/init

答案 1 :(得分:0)

Rails将为您的JavaScript资产文件夹中的每个文件提供一个JavaScript文件。例如,由于其中存在“ application.js”文件,因此您应该为javascript_include_tag使用:application。您将ckeditor包含在application.js文件中,这就是ckeditor起作用的原因。但是,您正在尝试为不存在的资产添加JavaScript文件,这意味着javascripts文件夹中没有“ ckeditor.js”文件。

此消息来自Rails尝试查找js文件的资产名称,因为在prod中,Rails会对文件名使用唯一的哈希值以防止缓存。

这可能一直是一个问题,而且您从未注意到JavaScript文件404ing,现在Rails 5.2在问题上比4.2大得多。

您应该只删除javascript_include_tag行。

或者,您可以创建一个ckeditor.js文件,并将//= require ckeditor/init从application.js文件移至ckeditor.js。现在,您只能在需要它的页面上执行javacript_include_tag。但是请注意您的装载顺序。如果您的application.js文件中有任何依赖于ckeditor的js,反之亦然,那么您需要确保以正确的顺序将文件包含在html中(与应用程序中发生需求的顺序相同)。 js,假设顺序很重要)。