2013-10-14 22 views
0

我试图使用background-image显示图像,但是我尝试过的东西都没有问题。但是,在视图中的image_tag()工作得很好。Rails 4 + Apache + Passenger:图像资产不会显示为背景图像

我已经试过:

background-image: url("images/icons/heart.png")

background-image: url("icons/heart.png")

background-image: image-url("images/icons/heart.png")

background-image: image-url("icons/heart.png")

background-image: asset-url("images/icons/heart.png")

background-image: asset-url("/icons/heart.png")

background-image: asset-data-url("images/icons/heart.png")

background-image: url(image-path("icons/user_comment.png"))

每次重新运行rake assets:precompile

唯一的资产 - 数据 - URL已工作,但因为它的图像数据存储到CSS,这是多余的。我不能以任何理由让它在生产中呈现正确的CSS。它总是出现在background-image: url("/images/icons/heart.png")或类似的地方,最后的散列不适用。

其中大部分工作在开发中。

为什么image_tag会产生正确的url,而这些不会呢?

+0

你是如何生成生产中的CSS?你使用了正确的'RAILS_ENV'吗? – phoet

+1

你正在使用哪种生产图像?如果您使用asset_sync gem,它会弄乱图像(我们正在修复)。你的图像如何在CSS和服务器中被引用? –

+0

@phoet'RAILS_ENV'是生产。 CSS文件只存储在app/assets/stylesheets中。 @ rich-peck我没有特别使用任何gem来引用CSS。在本地,CSS显示'background-image:url(“assets/icons/heart.png”)'。 – justindao

回答

3

发现问题所在,我正在编译资源不正确。

我需要运行

bundle exec rake assets:precompile RAILS_ENV=production

,而不是仅仅只是rake assets:precompile

+0

这对Rails 4.0.1有效。 – vanboom

0

这是一个简单的CSS文件或SASS/SCSS文件吗?这可能是一个基本的建议,但对我来说,这听起来像你正在使用直接的CSS,对此我不认为image-url等指令将被评估。

+0

是的,它是'application.css.scss'。 – justindao