Rails-heroku资产路径中图像的绝对URL

问题描述 投票:-1回答:2

我在app/assets/images/admin目录下有图像。

在开发中,我已经使用类似的方法获取URL

"#{root_url}assets/admin/filename.jpg"

但是它不适用于Heroku。

那么引用Heroku上Assets文件夹下图像的最佳方法是什么?

ruby-on-rails url heroku asset-pipeline
2个回答
3
投票

资产文件夹下的参考图像

如果使用image_tag,则无论处于image_tag还是production,都可以调用相对路径:

development

-

如果您在CSS中调用图像,则需要使用<%= image_tag "admin/filename.jpg" %>

asset-path or asset-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可以选择正确的文件,而不管您使用的是哪种环境。


1
投票

使用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")

© www.soinside.com 2019 - 2024. All rights reserved.