2013-06-01 46 views
5

例如,在我的Rails應用程序,我有類似:Rails的圖像和資源沒有被正確加載

.wax_seal { 
    background: url("wax-seal-small.png"); 
    display: block; 
    height: 100px; 
    margin: 0 auto; 
    width: 92px; 
} 

.wax_seal:active { 
    background: url('wax-seal-small-broken.png'); 
} 

在我config/environments/production.rb文件:

# Disable Rails's static asset server (Apache or nginx will already do this). 
config.serve_static_assets = true 

我手動調用資產編譯:

bundle exec rake assets:precompile 

而文件是在名稱末尾用散列創建的:

wax-seal-small-Uuhqwduhqwdoi234983jewf.png 

所以這不起作用:

background: url("wax-seal-small.png"); 

但這個工作正常(在Chrome中,當我手動類型吧):

background: url("wax-seal-small-Uuhqwduhqwdoi234983jewf.png"); 

我在這裏錯過了什麼步驟?我怎樣才能讓我的CSS規則添加在那個小散列?

config/environments/production.rb中添加config.assets.compile = true使其工作,但是我在Rails指南中讀到,由於顯着的性能命中,這是一個糟糕的做法。

+0

我有這個相同的問題,我已經嘗試了2個答案(迄今)沒有運氣的兩個建議。你可以分享你的整個'production.rb'文件,以便我可以與我的比較?謝謝。 –

回答

5

我發現這個在edgerails文檔:http://edgeguides.rubyonrails.org/asset_pipeline.html#css-and-sass

2.3.2 CSS和薩斯

當使用資產管線,路徑資產必須重新編寫和青菜護欄提供-url以及用於以下資產類別的路徑助手(在Sass中用連字符強調,用Ruby強調):圖像,字體,視頻,音頻,JavaScript和樣式表。

  • image-url("rails.png") becomes url(/assets/rails.png)
  • image-path("rails.png") becomes "/assets/rails.png"

的更通用的形式,也可使用,但資產路徑和類都必須被指定:

  • asset-url("rails.png", image) becomes url(/assets/rails.png)
  • asset-path("rails.png", image) becomes "/assets/rails.png"
+1

這看起來不是答案?這個問題似乎是「爲什麼指紋不能正常工作」。 – twooster

4

如果您使用青菜或更少,你可以使用background: image-url("wax-seal-small.png");

這將預先準備的路徑,您的文件和附加緩存剋星哈希值。

否則只是將其引用到/ assets目錄。例如。 background: url("/assets/wax-seal-small.png");

+0

我正在使用默認的'.scss'文件。這是猶太人,鐵路的方式來做到這一點?使用'image-url'而不是'url'?我在哪裏可以找到有關'image-url'的官方文檔? – sergserg

+0

該死的我剛剛寫了'/ assets/....',你也打敗了我。 – pjammer