将供应商资源编译为根文件时遇到麻烦.
我希望以下资产可以独立使用(不与其他资产一起包装_:
vendor/gems/neo-viz/app/assets/stylesheets/neo-viz.css.scss vendor/gems/neo-viz/app/assets/javascripts/neo-viz.js.coffee vendor/gems/neo-viz/app/assets/javascripts/lib/jQuery/jquery-1.6.1.min.js vendor/gems/neo-viz/app/assets/javascripts/lib/arbor/arbor.js
以下行:
config.assets.precompile += %w( jquery-1.6.1.min.js arbor.js neo-viz.js neo-viz.css )
只有css文件被预编译并提供.为什么?
另外,在看到这个问题(Including assets in subdirectories with config.assets.precompile in Rails)后,我试过:
config.assets.precompile += %w( jquery-1.6.1.min.js arbor.js neo-viz.js neo-viz.css lib/arbor/arbor.js arbor/arbor.js lib/jQuery/jquery-1.6.1.min.js jQuery/jquery-1.6.1.min.js )
但没有什么区别.想法?
解决方法
默认情况下,Rails只能查看3个位置:app / assets,lib / assets或vendor / assets. Sprockets在子目录javascripts中查找JS资产.例如.
app/assets/javascripts/arbor.js lib/assets/javascripts/arbor.js vendor/assets/javascripts/arbor.js
如果要查看Rails正在寻找的位置,可以在控制台中使用它:Rails.application.config.assets.paths
您可以做的是将自定义路径添加到管道中:
# @file: config/application.rb config.assets.paths << Rails.root.join("vendor","gems","neo-viz","app","assets","javascripts")
然后创建一个清单,其中包含您的JS文件:
# @file: /vendor/gems/neo-viz/app/assets/javascripts/neo-viz.js //= require lib/jQuery/jquery-1.6.1.min //= require lib/arbor/arbor //= require neo-viz
最后添加你的清单:
config.assets.precompile += %w( neo-viz.js )'
如果你还想分开添加它们,我看不清楚,为什么不将它们包含在清单中,那么你必须添加所有可能的路径前缀,所以Rails知道在哪里看:
# @file: config/application.rb config.assets.paths << Rails.root.join("vendor","stylesheets") config.assets.paths << Rails.root.join("vendor","javascripts") config.assets.paths << Rails.root.join("vendor","javascripts","lib","jQuery") config.assets.paths << Rails.root.join("vendor","arbor")
然后,您可以像这样添加它们,因为清单之外的资产必须添加到预编译数组中:
config.assets.precompile += %w( jquery-1.6.1.min.js arbor.js neo-viz.js neo-viz.css )
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。