2012-06-20 11 views
5

Rails 3.1 wymaga teraz użycia image_tag podczas renderowania obrazu przy użyciu potoku zasobów.Jak renderować obrazy w JavaScript z Rails 3.1

Mam wbudowane przewijanie do mojej aplikacji i umieściłem kod w pliku js.coffee. Chcę renderować obracający się ładujący GIF, gdy ładuje się więcej produktów. Nie mogę użyć tutaj image_tag, ponieważ ten plik nie obsługuje kodu railsowego, ale napisałem go tutaj, aby zrozumieć, co próbuję zrobić.

jQuery -> 
    if $('.pagination').length 
    $(window).scroll -> 
     url = $('.pagination .next_page').attr('href') 
     if url && $(window).scrollTop() > $(document).height() - $(window).height() - 1200 
     $('.pagination').html("<%= image_tag("loading.gif") %> Loading more...") 
     $.getScript(url) 
    $(window).scroll() 

Wcześniej bym go po prostu napisany w czystym HTML, używając <img src=... Ale to nie będzie już pracować z rurociągu aktywów. Jak mogę to osiągnąć?

Odpowiedz

5

Używanie zwykłego HTML powinno działać dobrze.

Spróbuj użyć: <img src="/assets/loading.gif" />, jeśli Twój loading.gif znajduje się wewnątrz.

AKTUALIZACJA 21/06/2012

Jak na Ruby on Rails Guide, Section 2.2.3 zmieniając rozszerzenie pliku z twoich plików .js do filename.js.erb lub filename.js.coffee.erb pozwoli Ci korzystać z wbudowanego rubin wewnątrz javascript.

Następnie można użyć pomocnika asset_path, aby uzyskać dostęp do ścieżki, w której przechowywane są zasoby.

+1

Czy będzie to działać nie tylko w przypadku uwzględnienia części odcisków palców? Musiałoby to być coś w rodzaju: tob88

+0

Hmm, dobra uwaga. Nie myślałem o tym, bo bawiłem się tylko z czymś w moim środowisku deweloperskim. Wkrótce przyjrzę się temu. – Zajn

+0

Chodzi mi o to, że mógłbym umieścić tag image_tag w div w widoku bez wyświetlania, a następnie umieścić $ ('. PaginationLoader'). Show() w kodzie js. Ale wydaje się to po prostu niepotrzebne i trochę pracy, z pewnością musi być lepszy sposób. Byłbym zainteresowany, gdybyś był w stanie wymyślić coś, dzięki! – tob88