2013-10-24 19 views
0

我正在構建一個減肥應用程序,用於跟蹤用戶的體重以及他們每天吃多少卡路里。我使用Highcharts來顯示這些信息,每個圖表都保存在calories.js或weights.js中。卡路里圖表顯示正常,但我遇到了顯示權重圖表的問題。它只顯示,如果我也顯示在同一頁上的卡路里圖表。Javascript文件只能在Rails應用程序中按字母順序工作

我所做的唯一更改是在視圖中添加卡路里圖表的div代碼 - 不更改模型,控制器或JavaScript。不知何故修復了重量圖表。

如果我重新命名weights.js到calories.js之前的字母順序 - aweights.js - 然後問題反轉,並且我無法在沒有權重圖表的情況下顯示卡路里圖表。根據Rails控制檯,Calories.js和weights.js總是加載。

這是怎麼回事?

編輯:Backbone.js - Coffeescript extends說ROR沒有按字母順序導入資產,所以這不是太瘋狂。

+0

請注意自動包含。 –

+0

關於如何僅在使用正確的控制器或視圖時才加載.js文件的任何建議? – Coco13

+0

最容易做的事情可能是修復兩個文件加載時出現的問題;資產管道傾向於相信它只會將所有CS/JS轉儲到瀏覽器。 –

回答

0

感謝所有的評論,它幫助我在我需要去的方向得到。而不是加載所有導致問題的資產,我只在頁面上加載了我需要的資源。我使用yield in the header來完成此操作,只加載該特定的.js文件。我還需要更改\ app \ assets \ javascript \ application.js文件以不自動包含整個目錄。

0

您是否使用rails 3.1或更高版本?

如果是的話,你應該對你的應用程序/資產看看/ application.js中

//= require jquery 
//= require jquery_ujs 
//= require_tree . 

如果您需要一定的加載順序您可以在此設置如下圖所示:

//= require jquery 
//= require jquery_ujs 
//= weight 
//= calories 
//= require_tree . 

否則rails會按字母順序要求目錄中的文件。

看一看指南:http://guides.rubyonrails.org/asset_pipeline.html

+0

然後問題剛好相反 - 卡路里會加載,但體重不會。我需要一種既有負載又有我想要的方式。 – Coco13

+0

然後你有不同的選擇: (1)創建自己的js-bundles並加載視圖中的那些 或 (2)刪除require樹並加載所有頁面上需要的文件,在視圖中使用include_javascript_tag –