2013-09-22 76 views
2

我最近升级到Rails4,我有与供应商的预编译的文件夹图像资源的问题。我知道vendor/assets文件夹默认从编译中删除。Rails4问题与服务供应商提供的资产(图像)

我增加供应商/资产/ *文件夹assets.precompile配置,获得预编译的资产,但我的应用程序将不显示正在供应商/资产/图像文件夹中的图片。看起来该文件夹中的图像路径在生产中被渲染,但是具有错误的哈希后缀。

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

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

我的问题是:我应该做些什么来解决生产服务供应商提供的图像?

感谢您的帮助

+0

请参阅我的[答案] (http://stackoverflow.com/a/34532668/3102766)在类似的问题。 – tirdadc

回答

0

你尝试用vendor/assets/**/*

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

没有帮助..我得到同样的问题.. – Aljaz

6

由于版本4个vendorlib目录不包括在默认情况下,资产的管道。如果你想预编译的资产在这些目录中,你应该扩展该资产的路径是这样的:

(在你的application.rb):

config.assets.paths << Rails.root.join("vendor", "assets", "images") 
+0

这样做是好的做法,还是应该将它们移动到应用程序/资产目录? – ahnbizcad

+1

好的做法是将外部代码(例如 - 从购买的主题)保存在'vendor'目录中。您也可以将资产移动到“应用/资产”,但要注意不要混淆“资产”目录。可能有一些文件名重复。 –

+1

它不应该只是'Rails.root.join(“vendor”,“assets”,“images”)'? –

1

它说,在文档(从轨提取用于指导轨):

供应商/资产是由外部实体,如对JavaScript插件和CSS框架代码国有资产。 请记住,与其他文件也由资产管道(图片,样式表等)加工引用第三方的代码,将需要重新编写使用佣工像asset_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,请注意,在上海社会科学院你只需要使用hypened版本(图像路径,音频路径...)

+0

这是它工作的唯一方法。将资产重命名为css.erb并包含资产管道的标签 – juliangonzalez