在Rails 3.1基于资产的应用程序中包含两次javascript

虽然问题的标题与以前的标题非常相似,但我的问题似乎有所不同。

简而言之,js清单中的第一项包含两次。

这是我在Rails 3.1应用程序中的整个/app/assets/javascript/application.js文件:

 //= require jquery //= require jquery-ui //= require jquery_ujs //= require autocomplete-rails //= require utilities 

这里是渲染页面源代码的片段:

        

请注意,如果我向application.js任何其他行移动到顶部,如下所示:

 //= require utilities //= require jquery //= require jquery-ui //= require jquery_ujs //= require autocomplete-rails 

它总是第一个被包含两次的项目!

        

UPDATE

作为临时解决方法,我在列表顶部添加了//= require dummy ,它指向一个空的dummy.js文件。 虽然它在渲染页面中出现两次,但它没有任何效果,因为它什么也没做。 另一方面,如果我在development.rb设置config.assets.debug = false ,正如经常建议的那样,那么我的所有javascript都会被加载两次:

   

和js动作被触发两次(例如,删除模型时确认对话框弹出两次)

朱塞佩

之前我遇到过类似的事情,我只留下了第一个链接空白,它对我有用。 试试看。

 /*leave the following line empty */ //= require jquery //= require jquery-ui //= require jquery_ujs //= require autocomplete-rails //= require utilities 

事实certificate,罪魁祸首是rails-widgets插件,特别是这段代码 ,是小部件初始化的一部分。

删除后,一切恢复正常。 现在,Javascript资产在开发和生产中按预期加载一次。

虽然我很抱歉没有尽快发现问题对我的设置非常具体,但我仍然希望解决方案可能有用。 谢谢你们。

朱塞佩

看看这个:

Rails 3.1资产 – 发展中的奇怪服务

您还应检查您是否未编译资产,即没有公共/资产目录。 如果有删除它,退回你的服务器,你应该很高兴去。

最终,这两个解决方案都不适合我,所以我只是将config.assets.debug设置为false。 我无法以这种方式调试我的js,但至少它现在解决了这个问题。