2012-06-19 69 views
5

我已成功使用資產管道數月。 現在我想加載一些我的JS文件異步(使用yepnope庫)。它在config.assets.debugfalse時效果很好。Rails /資產管道:動態列出清單中包含的資產

但在開發模式(config.assets.debug通常是true),對我來說,最好的辦法是動態獲取所有的JS包含在我的清單文件的列表(我用了2個清單:application.js中和externals.js)把它們交給yepnope進行異步加載。

任何想法這樣做?

回答

8

終於找到了答案,我創造了這個幫手(讀this來看看如何申報輔助方法資產編譯過程中可見)

# given a list of Sprockets manifests, returns a flattened array of dependency paths 
def paths_for_manifests(manifests = []) 
    manifests.map do |manifest| 
    Rails.application.assets[manifest].dependencies.map{|d| "/assets/#{d.logical_path}"} 
    end.flatten 
end 

,我這樣使用它(從JS/CoffeeScript的文件):

paths = <%= paths_for_manifests(%w(externals.js application.js)) %>