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

Giu*_*ppe 4 javascript ruby-on-rails ruby-on-rails-3.1 asset-pipeline

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

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

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

//= require jquery
//= require jquery-ui
//= require jquery_ujs
//= require autocomplete-rails
//= require utilities
Run Code Online (Sandbox Code Playgroud)

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

<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>
Run Code Online (Sandbox Code Playgroud)

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

//= require utilities
//= require jquery
//= require jquery-ui
//= require jquery_ujs
//= require autocomplete-rails
Run Code Online (Sandbox Code Playgroud)

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

<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>
Run Code Online (Sandbox Code Playgroud)

UPDATE

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

<script src="/assets/application.js" type="text/javascript"></script>
<script src="/assets/application.js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)

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

朱塞佩

小智 13

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

/*leave the following line empty */

//= require jquery
//= require jquery-ui
//= require jquery_ujs
//= require autocomplete-rails
//= require utilities
Run Code Online (Sandbox Code Playgroud)

  • 原来这对我有用,谢谢Vosobe! (4认同)
  • 有趣的...你知道为什么这个有效吗? (2认同)