图像不在生产模式下显示。 在开发环境中运行良好。
例如,以下代码未显示图像
<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
进行计算。