轨道/资产管道:动态列出清单中包含的资产



我成功地使用资产管道几个月了。现在我想异步加载我的一些 JS 文件(使用 yepnope 库)。当config.assets.debug false时,它工作得很好。

但是在开发模式下(通常true config.assets.debug),对我来说最好的选择是动态获取我的清单中包含的所有 js 文件的列表(我得到了 2 个清单:应用程序.js和外部.js)将它们交给 yepnope 进行异步加载。

有什么想法吗?

终于找到了答案,我创建了这个助手(阅读本文以了解如何在资产编译期间声明可用的帮助程序方法)

# 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)) %>

最新更新