rails中image_tag中的变量不会在生产中输出摘要值

时间:2013-09-13 04:16:22

标签: ruby-on-rails ruby-on-rails-3.1

我有一个基本上看起来像这样的标签:

<%= 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部署。

1 个答案:

答案 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,并在视图模板中调用此帮助程序。