我在app/assets/images/admin
目录下有图像。
在开发中,我已经使用类似的方法获取URL
"#{root_url}assets/admin/filename.jpg"
但是它不适用于Heroku。
那么引用Heroku上Assets文件夹下图像的最佳方法是什么?
资产文件夹下的参考图像
如果使用image_tag
,则无论处于image_tag
还是production
,都可以调用相对路径:
development
-
如果您在CSS中调用图像,则需要使用<%= image_tag "admin/filename.jpg" %>
:
asset-path
orasset-url
您的问题与asset-path
有关。
当您precompile您的资产(在Heroku中是必需的)时,所有asset-url
,#app/assets/stylesheets/application.css
.header {
background: asset-url("admin/filename.png");
}
,asset fingerprinting等都放入images
文件夹中。更重要的是,每个文件都是fingerprinted(附加一些数字):
css
因此,当您处于“生产”状态时,调用javascript
将导致404,因为该文件将不存在。
您需要使用上面的路径助手之一,以确保Rails可以选择正确的文件,而不管您使用的是哪种环境。
使用public/assets
获取带有图片部分的html:
global-908e25f4bf641868d8683022a5b62f54.css
使用#{root_url}assets/admin/filename.jpg
获得这样的路径:
image_tag('admin/filename.jpg')
使用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")