3

我最近升级到 Rails4,但在供应商文件夹中预编译图像资产时遇到问题。我知道默认情况下从编译中删除了 vendor/assets 文件夹。

我将 vendor/assets/* 文件夹添加到 assets.precompile 配置中,它可以预编译资产,但我的应用程序不会显示 vendor/assets/images 文件夹下的图像。该文件夹中的图像路径似乎是在生产中呈现的,但哈希后缀错误。

config.assets.precompile += [ 'themes/*', 'jquery.fancybox.css', 'vendor/assets/*' ]

处理这个问题的 Rails4 文档真的很差。我不想将文件从供应商/资产移动到应用程序/资产,因为我喜欢将我的文件和外部文件分开。

我的问题是:我应该怎么做才能在生产中修复服务供应商图像?

感谢帮助

4

3 回答 3

5

由于版本 4vendorlib目录默认不包含在资产管道中。如果您想在这些目录中预编译资产,您应该像这样扩展资产路径:

(在你的application.rb):

config.assets.paths << Rails.root.join("vendor", "assets", "images")
于 2013-09-22T14:02:59.800 回答
2

它在文档中说(从 rails 指南中提取 rails ):

vendor/assets 用于外部实体拥有的资产,例如 JavaScript 插件和 CSS 框架的代码。请记住,第三方代码引用了资产管道也处理的其他文件(图像、样式表等),需要重写以使用诸如 assets_path 之类的帮助程序

因此,您放入供应商的所有引用其他字体和/或图像的 css 文件都需要手动编辑,以在它们引用其他资源时包含资产管道帮助器方法。例如:

.my-class { background-image: url(<%= asset_path 'image.png' %>) }

.logo { background: url(<%= asset_data_uri 'logo.png' %>) }

还有 font_path、image_path 和 audio_path,请注意,在 SASS 中您只使用炒作的版本(image-path、audio-path...)

于 2015-05-02T19:06:06.193 回答
0

你试过vendor/assets/**/*吗?

config.assets.precompile += [ 'themes/*', 'jquery.fancybox.css', 'vendor/assets/**/*' ]
于 2013-09-22T12:00:57.977 回答