我不确定这种情况何时或如何发生,但每当我进入
时的application.js
//= require jquery
//= require jquery_ujs
在我的配置文件中,我有以下内容:
config.assets.compress = false
config.assets.compile = true
我的资产不会被单独压缩和提供,我希望在我的开发环境中使用。但是,只要//= require jquery_ujs
中存在application.js
,我的所有javascript事件(例如:confirm
中的<%= link_to 'Destroy All', object_destroyall_path, :confirm => 'Are you sure?' %>
都会重复。对于上述链接,我会得到如果我加载了jquery_ujs和jquery,则会发出两个警告。如果我摆脱了jquery_ujs,就会发出一个警告。我知道我应该同时拥有jquery和jquery_ujs,所以它们现在都包含在application.js中。这就是我得到的服务资产未压缩:
现在,如果我更改设置并压缩我的资产
config.assets.compress = true
config.assets.compile = false
我不再有重复的javascript事件的问题。但我需要能够在开发中运行未压缩的资产。发生什么了?我试过了
RAILS_ENV=development bundle exec rake assets:clean
RAILS_ENV=development bundle exec rake assets:precompile
但我不认为这些应该对我的未压缩资产做任何事情,对吗?我相信jquery_ujs正在某处加载两次,但我真的不知道。在控制台中,我没有收到任何错误。有什么想法吗?
编辑:只是为了澄清,jquery_ujs函数是唯一与javascript相关的重复事件。我单独编写脚本,不处理ujs的调用工作正常。它只是利用ujs的控件,例如我提到的link_to
。