图像未以生产模式显示

时间:2017-07-14 06:18:21

标签: ruby ruby-on-rails-3 asset-pipeline

图像未在生产模式下显示。它在开发环境中运行良好。

例如,以下代码不显示图像

<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文件夹中找到。

这里的实际问题是什么?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

那是因为您需要将image_tag用于此类资产。您无法对路径进行硬编码,因为它们会在您编译这些资产时发生变化,并且会进行哈希处理。

Rails对每个静态资产执行内容哈希,以确保该名称对于任何给定的修订都是唯一的。这可以避免缓存破坏问题,您需要强制人们刷新以获取更改,还有助于保留未更改资产的缓存。

缺点是最终名称是不可预测的,当应用程序在生产模式下运行时,您需要使用image_tag来计算它。