虽然问题的标题与以前的标题非常相似,但我的问题似乎有所不同。
简而言之, js清单中的第一项包括两次。
以下是Rails 3.1应用程序中的整个/app/assets/javascript/application.js
文件:
//= require jquery
//= require jquery-ui
//= require jquery_ujs
//= require autocomplete-rails
//= require utilities
这是渲染页面源代码的片段:
<script src="/assets/jquery.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery-ui.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery_ujs.js?body=1" type="text/javascript"></script>
<script src="/assets/autocomplete-rails.js?body=1" type="text/javascript"></script>
<script src="/assets/utilities.js?body=1" type="text/javascript"></script>
<script src="/assets/application.js?body=1" type="text/javascript"></script>
请注意,如果我向application.js
中的任何其他行移动到顶部,如下所示:
//= require utilities
//= require jquery
//= require jquery-ui
//= require jquery_ujs
//= require autocomplete-rails
它始终是第一个被包含两次的项目!
<script src="/assets/utilities.js?body=1" type="text/javascript"></script>
<script src="/assets/utilities.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery-ui.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery_ujs.js?body=1" type="text/javascript"></script>
<script src="/assets/autocomplete-rails.js?body=1" type="text/javascript"></script>
<script src="/assets/application.js?body=1" type="text/javascript"></script>
更新
作为临时解决方法,我在列表顶部添加了//= require dummy
,它指向一个空的dummy.js文件。虽然它在渲染页面中出现两次,但它没有任何效果,因为它什么也没做。另一方面,如果我按照config.assets.debug = false
设置development.rb
,经常建议,那么我的所有javascript都会被加载两次:
<script src="/assets/application.js" type="text/javascript"></script>
<script src="/assets/application.js" type="text/javascript"></script>
和js动作被触发两次(例如,删除模型时弹出两次确认对话框)
朱塞佩
答案 0 :(得分:13)
之前我遇到过类似的事情,我只留下了第一个链接空白,它对我有用。试一试。
/*leave the following line empty */
//= require jquery
//= require jquery-ui
//= require jquery_ujs
//= require autocomplete-rails
//= require utilities
答案 1 :(得分:3)
事实证明,罪魁祸首是rails-widgets插件,特别是this bit of code,是小部件初始化的一部分。
取下后,一切恢复正常。现在,Javascript资产在开发和生产中按预期加载一次。
虽然我很抱歉没有尽快发现问题对我的设置非常具体,但我仍然希望解决方案可能有用。谢谢大家。
朱塞佩
答案 2 :(得分:1)
看看这个:
Rails 3.1 Assets - Strange Serving in Development
您还应检查您是否未编译资产,即没有公共/资产目录。如果删除它,请退回服务器,你应该好好去。
最终,这两个解决方案都不适合我,所以我只是将config.assets.debug设置为false。我无法以这种方式调试我的js,但至少它现在解决了这个问题。