Rails 3.2 jquery_ujs在未压缩资源时复制javascript调用

时间:2014-05-10 17:12:06

标签: javascript jquery ruby-on-rails unobtrusive-javascript

我不确定这种情况何时或如何发生,但每当我进入

的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中。这就是我得到的服务资产未压缩:

enter image description here

现在,如果我更改设置并压缩我的资产

 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

0 个答案:

没有答案