2017-07-14 24 views
0

圖像無法在生產模式下顯示。它在開發環境中工作正常。圖像無法在生產模式下顯示

例如,圖像沒有被顯示爲以下代碼

<img alt="" class="img-circle" src="/assets/avatar.jpg"> 

但是它適用於IMAGE_TAG

<%= image_tag 'avatar.jpg',class:"img-circle", :width=>'29' %> 

,其生成如下的HTML

<img class="img-circle" width="29" src="/assets/avatar-cabb5744ce203e3fd174df28be60bfb942d35013b57513680aadda2ba9602762.jpg" alt="Avatar cabb5744ce203e3fd174df28be60bfb942d35013b57513680aadda2ba9602762"> 

Production.rb

config.serve_static_files = false 

    config.assets.js_compressor = :uglifier 

    config.assets.compile = false 

    config.assets.digest = true 

文件avatar.jpg實際上在assets/images文件夾中可用。

這裏的實際問題是什麼?我該如何解決這個問題?

+2

嘗試這個'

+0

這個工程,但我很困惑爲什麼url'/assets/avatar.jpg'沒有提供圖片時,圖像實際上可用在assets/images文件夾 – prajeesh

+0

請查看@ tadman的回答以獲得解釋... –

回答

1

這是因爲您需要使用image_tag來處理這類資產。您無法對路徑進行硬編碼,因爲它們在編譯這些資產時會發生變化,並且會被散列。

Rails對每個靜態資產執行內容哈希以確保該名稱對於任何給定的修訂都是唯一的。這樣可以避免緩存清除問題,因爲您需要強制用戶刷新以獲取更改,還可以幫助保留尚未更改的資產的緩存。

缺點是最終的名稱是不可預知的,當應用程序在生產模式下運行時,需要使用image_tag進行計算。