图像未在生产模式下显示。它在开发环境中运行良好。
例如,以下代码不显示图像
<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文件夹中找到。
这里的实际问题是什么?我该如何解决这个问题?
答案 0 :(得分:2)
那是因为您需要将image_tag
用于此类资产。您无法对路径进行硬编码,因为它们会在您编译这些资产时发生变化,并且会进行哈希处理。
Rails对每个静态资产执行内容哈希,以确保该名称对于任何给定的修订都是唯一的。这可以避免缓存破坏问题,您需要强制人们刷新以获取更改,还有助于保留未更改资产的缓存。
缺点是最终名称是不可预测的,当应用程序在生产模式下运行时,您需要使用image_tag
来计算它。