我在app/assets/images/admin
目录下有图片。
在开发中,我使用了类似的东西来获取URL
#{root_url}assets/admin/filename.jpg
但它不适用于Heroku。
那么在Heroku上的资源文件夹下引用图像的最佳方法是什么?
答案 0 :(得分:1)
使用image_tag('admin/filename.jpg')
获取带有图片部分的html:
development# => <img alt="Rails" src="http://yourhost/assets/admin/filename.jpg" />
production# => <img alt="Rails" src="http://yourhost/assets/admin/filename-5643564625453543.jpg" />
使用image_path("admin/filename.jpg")
获取如下路径:
development# => "/assets/admin/filename.jpg"
production# => "/assets/admin/filename-5643564625453543.jpg"
使用image_url("admin/filename.jpg")
获取完整的网址:
development# => "http://yourhost/assets/admin/filename.jpg"
production# => "http://yourhost/assets/admin/filename-5643564625453543.jpg"
您可以获得有关
的更多信息答案 1 :(得分:1)
资产文件夹
下的参考图像
如果您使用image_tag
,无论您是production
还是development
,都可以调用相对路径:
<%= image_tag "admin/filename.jpg" %>
-
如果您在 CSS 中调用图片,则需要使用asset-path
or asset-url
:
#app/assets/stylesheets/application.css
.header {
background: asset-url("admin/filename.png");
}
您遇到的问题与asset fingerprinting有关。
当您预编译您的资产(Heroku中需要)时,所有images
,css
,javascript
等都会被放入{{1文件夹。更重要的是,每个文件都是指纹(附加了一些数字):
public/assets
因此,当您处于“生产”时,调用global-908e25f4bf641868d8683022a5b62f54.css
将导致 404 ,因为该文件将不存在。
您需要使用其中一个路径助手(上图)来确保Rails可以选择正确的文件,无论您使用哪种环境。