在 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/images
、vendor/assets/images
和public/assets/images
来拉取正确的文件
如果这在本地有效,则表示您的路径没问题。如果它在本地不起作用,则意味着您的路径不正确,问题出在您的代码上。
您应该提供一个指向您的 Heroku 应用程序的链接并向我们展示您正在使用的 HTML / erb 文件
【讨论】:
以上是关于在 Heroku 中未显示已部署应用程序的图像的主要内容,如果未能解决你的问题,请参考以下文章
将 Rails 应用程序部署到 Heroku 后,不显示 JQuery 函数中的图像
在已部署的 Flask 应用程序 (Heroku) 上使用 OpenCV