0

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

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

4

1 回答 1

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应用程序中的任何资产,并从您的视图模板中调用此帮助器。

于 2013-09-13T05:40:53.707 回答