2013-11-15 58 views
0

我有一個軌4.0.1紅寶石2.0.0應用程序。如果我在本地預編譯,檢查時我的圖像是否顯示長預編譯的名稱?

我在本地預編譯:RAILS_ENV =生產包exec rake資產:預編譯。

我在production.rb文件配置爲: config.serve_static_assets =真 config.assets.compile =真

在我的應用程序/資產/圖像文件夾中的圖片是在公共/資產文件夾,例如'starsw600-xxxlongnumberxxx.png'

當我在Heroku中部署時,我得到「檢測到清單文件,假設資產是在本地編譯的」,我的圖像顯示出來。

我的問題是,當我檢查我的形象得到 的背景圖像 URL(‘http://abc-abc-abc.herokuapp.com/assets/starsw600.png’)'

一樣的,當我不預編譯。當我檢查元素不應該我得到 的背景圖像 URL(‘http://abc-abc-abc.herokuapp.com/public/assets/starsw600-xxxlongnumberxxx.png’)'

從而驗證了Heroku的使用,我所做的本地預編譯的圖像?

當我將config.assets.compile更改爲false'config.assets.compile = false'時,圖像不顯示。

所以問題是:如果我本地預編譯,我的圖像應檢查時顯示長預編譯的名稱?

這是我的樣式表ricardoorangetest /應用/資產/樣式表/ show.css.scss

.stars { 
    background-image:image_path('/starsw600.png'); 
    height:30px; 
    width:600px; 
    //background-color:#ffffff; 
    background-repeat:no-repeat; 
    border-color:#190c00; 
    border-style:solid; 
    border-width:2px 0px 0px 0px; 
} 
+0

將serve_static_assets設置爲false會發生什麼? – davidfurber

+0

@davidfurber config.assets.compile = true和config.serve_static_assets = false會產生相同的結果。同樣是「檢測到的顯式文件...本地編譯」和檢查圖像給.../assets/starsw600.png。 – flobacca

+0

@davidfurber config.assets.compile = false和config.serve_static_assets = false不會產生圖像。 – flobacca

回答

-1

如果您使用Heroku的,因此必須提供靜態資產,你必須與合作asset fingerprinting不管你如何預編譯


動態路徑&預編譯

我們有這個問題,Heroku的,我們發現解決這個問題的最好方法是使用動態資產路徑,與SCSS

而不是使用調用圖片的靜態CSS方法:

#assets/application.css  
background-image: url('/img/file.png'); 

的問題在於CSS無法動態呈現圖像路徑,這意味着當您運行產品應用程序時,您將永遠看不到圖像。造成這種情況的解決辦法是使用SCSS這樣的:正確

#assets/application.css.scss 
background-image: image_path('/img/file.png'); 

這將編譯的形象,使其在Heroku上顯示


希望這有助於?

+0

感謝您的回覆。我仍然有同樣的結果。用image_path('/ img/starsw600.png')代替沒有區別。我試過了/images/starsw600.png和'starsw600.png'。我真正想知道的是,當你打開網頁並檢查元素時,你會看到「filename.png」還是你看到「filename-xxxnumbsxxx.png」。我的意思是我可以顯示圖像,但我不知道它們是否顯示在預編譯文件中。 – flobacca

+0

感謝您的回覆!你把SCO中的'image_path'方法,還是純CSS?如果你只使用普通的CSS,可能性不大。另外,您是否撥打資源或上傳的圖片? –

+0

我的樣式表是show.css.scss。你怎麼知道我的圖像顯示不正確?是不是因爲它們沒有顯示爲長編譯名?是否因爲他們應該顯示甚至與config.assets.compile = false?我仍然有我的原始問題。我如何知道本地編譯的文件正在被使用?我想,如果你能讓我達到那個地步,我知道有一個問題,我可以確定什麼時候問題解決了,我可以自己繼續。 – flobacca