4

儘管問題的標題與以前的問題非常相似,但我的問題似乎有所不同。JavaScript在Rails 3.1基於資產的應用程序中包含兩次

簡而言之,第一項在js清單中包含兩次。

這是我的/app/assets/javascript/application.js文件在Rails 3.1的應用程序的整體:

//= 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> 

UPDATE

作爲暫時的解決辦法,我在列表的頂部,它指向一個空dummy.js文件添加//= require dummy。雖然它在呈現的頁面中出現兩次,但它沒有任何效果,因爲它什麼都不做。在另一方面,如果我在development.rb設置config.assets.debug = false,經常建議,那麼我所有的JavaScript代碼被加載兩次:(刪除模型時如確認對話框彈出兩次)

<script src="/assets/application.js" type="text/javascript"></script> 
<script src="/assets/application.js" type="text/javascript"></script> 

和JS行動觸發了兩次

朱塞佩

+1

你有任何機會在公共/資產文件?如果你刪除它們,因爲這可能會導致此重複 – Hishalv 2011-12-19 20:13:12

+0

不,我的開發中沒有資產目錄/ public – Giuseppe 2011-12-20 07:39:35

+0

您是否嘗試將config/environments/development.rb config.assets.debug更改爲false,想知道它是否執行了'正確的事情「,當它連接所有的資產 – house9 2011-12-21 05:39:20

回答

3

事實證明,罪魁禍首是rails-widgets插件,特別是this bit of code,這是小部件初始化的一部分。

刪除它後,一切恢復正常。現在,Javascript資產在開發和生產中按預期加載一次。

儘管我很抱歉沒有及時發現問題與我的設置相關,但我仍然希望解決方案可以達到某種目的。謝謝你們。

朱塞佩

13

我以前遇到類似的事情,我只是留下了第一個鏈接空白,它爲我工作。試一試。

/*leave the following line empty */ 

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

謝謝,但它沒有奏效。 – Giuseppe 2011-12-20 07:42:46

+4

原來,這對我有用,謝謝Vosobe! – ifightcrime 2012-01-05 04:16:45

+2

有趣...你知道爲什麼地球上這有效嗎? – sscirrus 2012-01-05 04:24:32

1

在此請看:

Rails 3.1 Assets - Strange Serving in Development

您也應該檢查,看看你有沒有編譯你的資產即沒有公共/資產目錄。如果有刪除它,反彈你的服務器,你應該很好去。

最終,這兩種解決方案都不適合我,所以我只是將config.assets.debug設置爲false。我不能真正以這種方式調試我的js,但至少它現在解決了這個問題。

+0

config.assets.debug = false使事情變得更糟。請參閱原始問題的更新。謝謝! – Giuseppe 2012-01-06 08:25:43

+0

你嘗試了Vosobe Kapsimanis的回答,只有一條評論,然後是空行,超過了一切?你有沒有嘗試過比較你的配置到一個新的rails應用程序?雖然,這聽起來很像我的空行問題,這看起來像是軌道上的一個缺陷。 – ifightcrime 2012-01-09 20:28:25

+0

刪除公共/資產爲我做了訣竅 – 2015-10-05 12:44:56

相關問題