我在index.html.erb文件中使用的图像位于assets / images目录中。我已将应用程序部署到heroku但它没有显示图像。我使用html文件中的标签而不是css文件链接图像。
请帮忙。
答案 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/images
,vendor/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