我最近更新到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是一个大型库,只想将其包含在需要它的管理员的特定页面上。如何实现?
答案 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,假设顺序很重要)。