2011-10-04 47 views
7

我收到以下錯誤:Rails 3.1不預編譯未被CSS引用的圖像?

Sprockets::Helpers::RailsHelper::AssetPaths::AssetNotPrecompiledError in Photos#edit 

Showing .../app/views/photos/_form.html.haml where line #49 raised: 

taxonomy/focus-building.jpg isn't precompiled 

Extracted source (around line #49): 

46:        = focus.code 
47:       .tooltip 
48:        %span.name= focus.name 
49:        = image_tag("taxonomy/focus-#{focus.code.downcase.dehumanize}.jpg") 
50:    /Help Overlay 
51:     .help 
52:      %a.overlay{:href=>"#", :rel=>'#help-focus'} Learn more about focus 

該圖像文件位於app/assets/images/taxonomy/focus-building.jpg。我已經運行了rake assets:precompile RAILS_ENV=production,但據我所知圖像沒有被複制到public/assets目錄。

奇怪的是,在SCSS中使用image-url()引用的所有資產都正常工作。爲什麼在使用image_tag時未對此圖像報告進行預編譯?

+0

你在使用Rails 3.1.1或3.1.0嗎? – Christos

+0

我在軌道上3.1.1 – Andrew

+0

我在此上添加+1。我在Rails 3.1.3上,並且遇到同樣的問題。我即將準備好衝擊資產管道。 –

回答

0

我和image_tag有同樣的問題。我通過使用實時編譯解決了問題。

在production.rb

  • config.assets.compile =真
+1

很好,除非我的部署環境暫時不能進行實時編譯,否則這將工作。所以不幸的是,這不是一個選項。 – Andrew

+1

這是一種解決方法,因此可以在一個緊迫的環境中工作 - 但如果您關注性能(並且讓我們面對它 - 在生產中,*您擔心性能*),它仍然不應該在生產中真正開啓。 –

2

如果你有assets.digest選項啓用,這將在名稱的末尾,並因此增加一個哈希對該文件的靜態引用將不再起作用,請更改任何靜態引用的資產,以便它們使用輔助方法。

+0

對於它的價值,這似乎對我有幫助。不知何故,在生產模式下啓用摘要最終使服務器更可靠地提供資產。儘管如此,我仍然想衝擊資產管道。 –