Heroku中部署的应用程序未显示图像

时间:2014-06-10 01:42:15

标签: ruby-on-rails

我在index.html.erb文件中使用的图像位于assets / images目录中。我已将应用程序部署到heroku但它没有显示图像。我使用html文件中的标签而不是css文件链接图像。

请帮忙。

2 个答案:

答案 0 :(得分:3)

如果您的图片是资产管道(IE assets/images)的一部分,您应该可以使用Heroku相对简单地访问它们,特别是如果您使用image_tag执行此操作(而不是css

-

<强>预编译

Heroku relies on your assets being static (precompiled),开始,我会确保资产在系统上预编译,并且您正确引用它们:

#cmd
$ heroku run rake assets:precompile

这将预先编译Heroku系统上的资产(无论如何都应该这样做),确保您的应用程序能够正确访问文件。这是第一个要测试的东西,因为通常情况下文件将保持非编译状态,防止Heroku读取它们

-

图片

在参考您的图片时,您需要通过asset pipeline了解调用image_tag "your_image.png 应自动调用assets/imagesvendor/assets/images和{ {1}}提取正确的文件

如果这在本地工作,则意味着您的路径没问题。如果它在本地不起作用,则表示您的路径不正确,问题与您的代码有关。


您应该提供指向Heroku应用的链接,并向我们展示您正在使用的HTML / erb文件

答案 1 :(得分:1)

如果您的图片确实在该文件夹中,那么您可以在How to reference images in CSS within Rails 4

使用此方法

但是如果您通过Carrierwave将图像上传到Rails应用程序中,那么您需要使用Cloudinary等外部图像托管服务提供商。这是因为每个git push都会刷新Heroku环境,因此上传的服务器上的任何文件都会被删除,因为它们不在客户端git端。

您可以运行heroku run bash查看Heroku上的目录,以验证图像是否存在。

修改

在常规视图中,您可以访问public / assets / images目录中的图像,如下所示:

<%= image_tag "rails.png" %>

来源:http://guides.rubyonrails.org/asset_pipeline.html#coding-links-to-assets