2012-09-17 36 views
1

我們有一個conf/environments/production.rb文件,它可以單獨列出所有的js文件,例如如何包含我的JavaScript文件而不單獨列出它們?

conf.assets.precompile += %w (highcharts.js) 
conf.assets.precompile += %w (schedule.js) 
conf.assets.precompile += %w (new_event.js) 
conf.assets.precompile += %w (old_event.js) 
conf.assets.precompile += %w (event_controls.js) 
conf.assets.precompile += %w (other_stuff.js) 
... 

每當我有一個新的js文件,我必須在這裏手動添加一個條目。

如何包含它們而不必手動維護此文件?

+1

這已被回答之前:http://stackoverflow.com/questions/7278029/rails-3-1-asset-precompilation - 雖然我同意你的標題更具描述性:) – emrass

回答

1

您在技術上從錯誤的方向接近問題。您的config.assets.precompile應該只引用一些中央清單類型文件(例如,application.js),然後清單文件會根據需要引用js文件。

例如,您的application.js可能看起來像:

//= require highcharts.js 
//= require schedule.js 
//= require new_event.js 
//= require old_event.js 
//= require event_controls.js 
//= require other_stuff.js 

設置這樣,所有列出的文件將被包含在application.js中的預編譯版本,application.js中是唯一的你需要在你的佈局中包含文件。

要自動添加新的文件,你可以改用

//= require_tree . 

,其中將包括在同一個目錄中的application.js每一個js文件,再加上那些在所有的子目錄。

實際上,包含應用程序中每個js文件的一個application.js文件有點多。您可以將文件分解成中央清單的集合。例如,charts.js,events.js,misc.js.將這些文件添加到您的config.assets.precompile。然後,當需要新文件時,更新清單文件而不是生產.rb文件。

+0

這是沒有必要錯了手動添加js文件。既然你並不總是想把所有的js文件編譯成一個。可能需要異步加載js文件。 – dc10

相關問題