2013-03-14 11 views
10

retina.js wygląda na obrazie z taką samą nazwą, ale z @ 2x przed rozszerzeniemSzyny rurociągu aktywów siatkówki @ 2x cache i datowniki buster są sprzeczne

szyn atutem rurociąg dodaje cache krach znacznik czasu do koniec pliku

oznacza to retina.js szuka [email protected] ale plik jest w [email protected]

ktoś ma pracę wokół tego?

Kto się pomylił w tym przypadku, czy plik retina.js powinien być wyszkolony w wyszukiwaniu plików pod numerem [email protected], jeśli oryginalna nazwa pliku pasuje do wzorca, który wskazuje, że ma skrót do pomijania pamięci podręcznej, lub czy potok powinien zostać zmieniony, aby zapewnić @ 2x jest zawsze tuż przed rozszerzeniem pliku?

Odpowiedz

5

Wydaje się to trochę pracy wokół sama w sobie, ale wygląda na poprawny sposób to zrobić jest:

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

a to doda prawidłowy atrybut danych-at2x że retina.js odbierze up

+1

Nie dodaje tego atrybutu - dodam tylko "retina =" true ". – sergserg

+1

To nie wydaje się być wbudowaną funkcją Railsów, zakładam, że @msaspence używa [retina_rails] (https://github.com/jhnvz/retina_rails). @ Odpowiedź poniżej justin-tanner działa, jeśli używasz [retina.js] (http://retinajs.com). – Frederik

5

dokumentacja retina.js sugeruje stosując metodę szyny pomocnika:

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 

Aby uzyskać więcej informacji sprawdź retina.js documentation.

Upewnij się także, że masz najnowszą wersję retina.js, obsługującą atrybut data-at2x.

+1

Działa to tylko w przypadku obrazów, których ścieżki są zdefiniowane w kodzie lub widoku. Zobacz moją odpowiedź na pytanie, jak rozwiązać problem z CSS-land za pomocą prostego mixin. –

1

Dla czegokolwiek innego niż znacznik obrazu (tj. Obrazy tła CSS, które są znacznie szerzej używane niż znaczniki img w większości aplikacji, nad którymi pracowałem), rozwiązałem je, pisząc trochę pomocnika LESS, który działa jak urok.

.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; 
    } 
}