我有一个基本上看起来像这样的标签:
<%= image_tag("people/#{person.department}/#{person.name}.jpg") %>
在制作中,输出为<img src="/assets/people/math/bob.jpg">
但是,与其他image_tags一样,我希望(并希望)输出包含预编译资产的摘要:<img src="/assets/people/math/bob-23u8518sd83yr822243dj0f.jpg">
与变量一起使用的image_tags是否不可能在生产中包含它们的摘要?作为注释,其他资产(例如我的CSS,JS和其他不使用变量的图像)成功使用其摘要值,因此这不应该是配置问题。
编辑 我做了一些额外的测试,这似乎特别影响了我的Heroku部署。
答案 0 :(得分:1)
您可以使用Sprockets'find_asset
方法,将逻辑路径传递到资产以获取Sprockets::BundledAsset
实例。例如
> Rails.application.assets.find_asset("people/#{person.department}/#{person.name}.jpg")
=> #<Sprockets::BundledAsset:0x3fe1142a4f10 pathname="/Users/timdorr/Projects/MyApp/app/assets/people/math/bob.jpg", mtime=2013-09-13 01:33:57 -0500, digest="23u8518sd83yr822243dj0f">
您可以在此对象上调用digest_path
以获取附加到资产的MD5
总和。
> Rails.application.assets.find_asset("people/#{person.department}/#{person.name}.jpg").digest_path
=> "people/math/bob-23u8518sd83yr822243dj0f.jpg"
借助这些知识,您可以轻松创建帮助程序,以便为应用程序中的任何资产返回digest_path
,并在视图模板中调用此帮助程序。