图像未在生产模式下显示

Image not displaying in production mode

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

例如以下代码不显示图片

<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 文件夹中可用。

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

那是因为您需要对任何此类资产使用 image_tag。您不能对路径进行硬编码,因为当您编译这些资产时它们会发生变化并且它们会被散列。

Rails 对每个静态资产进行内容散列,以确保名称对于任何给定修订都是唯一的。这避免了需要强制人们刷新才能获得更改的缓存破坏问题,还有助于为未更改的资产保留缓存。

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