【发布时间】:2011-08-15 03:52:21
【问题描述】:
我想从管道中排除特定的 javascript 文件 (modernizr),因为我希望它单独加载。
我想在开头加载 Modernizr,并在结尾连接我的其余 javascript。
有没有办法在 3.1 中与资产管道中的要求相反? IE。排除?
提前致谢。
亚当。
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3 asset-pipeline
我想从管道中排除特定的 javascript 文件 (modernizr),因为我希望它单独加载。
我想在开头加载 Modernizr,并在结尾连接我的其余 javascript。
有没有办法在 3.1 中与资产管道中的要求相反? IE。排除?
提前致谢。
亚当。
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3 asset-pipeline
我选择通过更改来保留 sprockets 功能
//= require_tree
到
//= require_directory .
这会使 sprockets 自动加载同一目录中的任何文件,但不会进一步加载任何文件夹中的文件。
这让我可以将 Modernizr.js 移动到 assets/javascripts/top 文件夹并在顶部手动加载它:
<%= javascript_include_tag "top/modernizr" %>
移动
<%= javascript_include_tag "application" %>
到我的 application.html.erb 文件的底部(结束 body 标记上方)
【讨论】:
config.assets.precompile += ['top/*.js', 'top/*.css'],否则在我的服务器会失败。
我知道这是一个老问题,但谷歌上周把我送到这里,所以这不是一个过时的问题。我在别处找到的答案是the "stub" directive for sprockets。所以像
//= require-tree .
//= stub Modernizr
这使 Modernizr.js 不受捆绑资产的影响。它可以包含在自己的标签中,就像原始答案一样。
Sprockets 变更日志说“存根”是在 2012 年 1 月添加的,所以在第一次回答这个问题时它不可用,但我认为现在这是一个很好的答案。
【讨论】:
转到您的 config/environments/production.rb 文件并添加以下行会更容易完成
config.assets.precompile += %w( modernizr.js )
然后,当您预编译资产时,现代化器将拥有自己的单独文件,您可以在脑海中使用。
【讨论】:
这些答案已经过时。只需将 active_admin.css.scss 从 app/assets/stylesheets 移动到 vendor/assets/stylesheets。
对active_admin.js.coffee 执行相同操作(从app/assets/javascripts 移动到vendor/assets/javascripts)。
您的资产将在需要时加载,您无需修改 applications.js 以适应 active_admin。
this issue 中描述了此解决方案。希望这会有所帮助。
【讨论】: