Rails资产管道视网膜@ 2x和缓存占用时间戳是不一致的

时间:2013-03-14 12:29:23

标签: ruby-on-rails asset-pipeline retina-display retina.js

retina.js查找具有相同文件名但在文件扩展名

之前使用@ 2x的图像

rails资产管道将缓存清除时间戳添加到文件名的末尾

这意味着retina.js正在寻找filename-cachebuster@2x.png,但文件位于filename@2x-cachebuster.png

任何人都有解决这个问题的方法吗?

这是错误的,即如果原始文件名与指示其具有缓存清除哈希的模式匹配,或者应该更改rails管道,则应该训练retina.js在filename@2x-cachebuster.png查找文件@ 2x总是在文件扩展名之前?

3 个答案:

答案 0 :(得分:5)

这看起来像是一些工作本身,但看起来正确的方法是:

<%= image_tag('image', retina: true) %>

这将添加retina.js将接收的正确data-at2x属性

答案 1 :(得分:5)

retina.js文档建议使用rails helper方法:

def image_tag_with_at2x(name_at_1x, options={})
  name_at_2x = name_at_1x.gsub(%r{\.\w+$}, '@2x\0')
  image_tag(name_at_1x, options.merge("data-at2x" => asset_path(name_at_2x)))
end

有关详细信息,请查看 retina.js documentation

另外,请确保您拥有最新版本的 retina.js ,并支持data-at2x属性。

答案 2 :(得分:1)

对于除图像标记以外的任何内容(即CSS背景图像,在我工作的大多数应用程序中使用的img标签比.at2x(@path, @w: auto, @h: auto) { background-image: image-url(@path); @at2x_path: ~`"@{path}".replace(/(.*)\.([^.]+)$/, "$1@2x.$2")`; @media all and (-webkit-min-device-pixel-ratio : 1.5) { background-image: image-url(@at2x_path); background-size: @w @h; } } 标签使用得更广泛),我已经通过编写一些LESS帮助程序解决了这个问题这就像一个魅力。

{{1}}