2013-10-14 21 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