2017-07-14 25 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进行计算。