图像未在生产模式下显示

问题描述 投票:0回答:1

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

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

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

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

ruby ruby-on-rails-3 asset-pipeline
1个回答
2
投票

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

Rails对每个静态资产进行内容哈希处理,以确保名称对于任何给定的修订都是唯一的。 这避免了缓存破坏问题,在这种情况下您需要强迫人们刷新以获取更改,还有助于为未更改的资产保留缓存。

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

© www.soinside.com 2019 - 2024. All rights reserved.