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

Posted

技术标签:

【中文标题】在 Heroku 中未显示已部署应用程序的图像【英文标题】:Images not showing for deployed app in Heroku 【发布时间】:2014-07-30 15:51:26 【问题描述】:

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

请帮忙。

【问题讨论】:

Rails 3.1 and Image Assets的可能重复 从您的 erb 文件中发布一些 sn-ps 以及在浏览器和服务器控制台中的输出。 您是否仔细检查了您的configuration files ? 有链接可以查看吗? 【参考方案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

【讨论】:

您看到的问题是:我的图像没有在 CSS 文件中的样式表中引用。我在 HTML 文件中引用了它们,我需要保持这种方式,所以考虑到如何在部署到 heroku 后显示图像【参考方案2】:

如果您的图像是资产管道的一部分 (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/imagespublic/assets/images来拉取正确的文件

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


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

【讨论】:

以上是关于在 Heroku 中未显示已部署应用程序的图像的主要内容,如果未能解决你的问题,请参考以下文章

将 Rails 应用程序部署到 Heroku 后,不显示 JQuery 函数中的图像

在heroku中部署Angular应用程序的问题

在已部署的 Flask 应用程序 (Heroku) 上使用 OpenCV

如何使用后端文件夹内的前端将 MERN 应用程序部署到 Heroku

text 如何在已部署的Heroku应用程序中查看文件

部署后,Laravel 中未显示图像