Ответ 1
Это похоже на немного работу вокруг себя, но похоже, что правильный способ сделать это:
<%= image_tag('image', retina: true) %>
и это добавит правильный атрибут data-at2x, который retina.js получит
retina.js ищет изображение с тем же именем файла, но с @2x перед расширением файла
Конвейер ресурсов rails добавляет временную метку кэша к концу имени файла
Это означает, что retina.js ищет [email protected]
, но файл находится в [email protected]
У кого есть работа для этого?
Кто ошибается в этом, т.е. должен ли retina.js быть обученным искать файлы в [email protected]
, если исходное имя файла соответствует шаблону, указывающему на то, что он имеет хэш хэша, или должен быть изменен конвейер рельсов, чтобы обеспечить @2x всегда перед расширением файла?
Это похоже на немного работу вокруг себя, но похоже, что правильный способ сделать это:
<%= image_tag('image', retina: true) %>
и это добавит правильный атрибут data-at2x, который retina.js получит
Документация retina.js
предполагает использование вспомогательного метода rails:
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.
Также убедитесь, что у вас установлена последняя версия retina.js, поддерживающая атрибут data-at2x
.
Для чего-либо, кроме тега изображения (например, фоновых изображений CSS, которые гораздо чаще используются, чем теги img
в большинстве приложений, над которыми я работал), я решил это, написав небольшой помощник LESS, который работает Как колдовство.
.at2x(@path, @w: auto, @h: auto) {
background-image: image-url(@path);
@at2x_path: ~`"@{path}".replace(/(.*)\.([^.]+)$/, "[email protected]$2")`;
@media all and (-webkit-min-device-pixel-ratio : 1.5) {
background-image: image-url(@at2x_path);
background-size: @w @h;
}
}