2013-10-05 64 views
11

我的rails應用程序有問題(Rails 4.0.0.rc2,ruby 2.0.0p195)。Heroku不提供背景圖片,localhost呢?

行爲很奇怪:我的本地主機正確顯示背景圖片,Heroku沒有。

在Heroku的日誌,我可以看到以下錯誤:

我:

ActionController::RoutingError (No route matches [GET] "/assets/piano.jpg"): 

我已經在我的custom.css.scss插入下面的代碼創建的背景圖片我用下面的代碼觸發了這一點,我在我的靜態頁面上:

<body class="full"> 
.... 
</body> 

我已經擁有創業板在生產環境中運行:

group :production do 
    gem 'pg' 
    gem 'rails_12factor' 
end 

在production.rb我已經設置了以下設置爲true:

config.serve_static_assets = true 

然而,不被顯示的圖像。你能幫我嗎?

+0

http://stackoverflow.com/questions/15257555/how-to-reference-images-in-css-within-rails-4 也可以參照這個題。 –

+0

是的。但是,問題不是基於我選擇的參考!它與資產的預編譯有關。 – Alex

回答

12

我已經找到了問題的解決自己:

RAILS_ENV=production bundle exec rake assets:precompile 

在我的控制檯運行此命令後,畫面效果正確顯示。

以前我只嘗試運行:

rake assets:precompile 

這本身並沒有幫助。您必須在命令中解決生產環境。

我希望這可以作爲其他用戶的參考。

25

確保您在production.rb文件中設置這些

config.cache_classes = true 
config.serve_static_assets = true 
config.assets.compile = true 
config.assets.digest = true 
+0

這是我的問題。在過去的一週中,我幾乎抨擊了我的頭,我想說聲謝謝! – IIllIIll

+0

不錯,這個解決方案爲我工作。謝謝 – Cas

+0

你能解釋爲什麼這個解決方案有效嗎? @ Brock90 – Recomer

4

我所需要的其他答案的組合爲我工作。

我需要使用@ Brock90的生產配置設置以及Alex提到的預先編譯資產。

-2

不必images /目錄

內子目錄您的圖片如果有人仍然有這個麻煩。我到處尋找解決辦法,我以爲我嘗試了一切。對於我的情況,我有像

background-image: url("containers/filled/Firkin-Keg-5-Gallons_filled.png"); 

因此我有圖像內的文件夾。這對localhost很有效,但在heroku上不起作用。

background-image: url("Firkin-Keg-5-Gallons_filled.png"); 

沒有更多的子目錄。

編輯 這是錯誤的。請參閱下面的註釋爲了正確使用

+2

這是錯誤的。子文件夾工作完美。你必須正確使用它:'background-image:url(image_path(「containers/filled/Firkin-Keg-5-Gallons_filled.png」))'確保你的樣式表文件的結尾是'.scss' – Iceman

+0

使用內置資產管道SCSS幫助程序以鏈接到您的管道編譯資產。有一堆,但每個鏈接到相應的'/ app/assets'路徑:'image-url','font-url' –