2012-06-20 4 views
5

In Rails 3.1 müssen Sie jetzt image_tag verwenden, wenn Sie ein Image mit der Asset-Pipeline rendern.Rendern von Bildern in Javascript mit Rails 3.1

Ich habe endlos in meine Anwendung scrollen und habe den Code in eine js.coffee-Datei gelegt. Ich möchte ein Spinning loading gif machen, während mehr Produkte geladen werden. Ich kann image_tag hier nicht verwenden, da diese Datei keinen Rails-Code unterstützt, aber ich habe es hier geschrieben, damit Sie verstehen, was ich versuche zu tun.

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() 

Früher hätte ich es nur in reinem HTML geschrieben, mit <img src=... Aber das wird nicht mehr mit der Asset-Pipeline arbeiten. Wie kann ich das erreichen?

Antwort

5

Die Verwendung von reinem HTML sollte gut funktionieren.

Versuchen Sie mit: <img src="/assets/loading.gif" />, wenn Ihr loading.gif innerhalb assets/images ist.

AKTUALISIERT 21/06/2012

Gemäß der Ruby on Rails Guide, Section 2.2.3, Ändern der Dateierweiterung Ihrer Js zu filename.js.erb oder filename.js.coffee.erb-Datei ermöglicht es Ihnen, eingebettet Rubin in Ihrem Javascript zu verwenden.

Sie können dann den asset_path Helfer verwenden, um auf den Pfad zuzugreifen, in dem Ihre Assets gespeichert sind.

+1

Funktioniert das nicht nur in der Produktion, wenn ich den Fingerabdruck Teil einschließe? Es müsste so etwas wie tob88

+0

sein Hmm, guter Punkt. Daran hatte ich nicht gedacht, da ich nur mit etwas in meiner Entwicklerumgebung spielte. Ich werde es in Kürze hier anschauen. – Zajn

+0

Ich meine ich könnte den image_tag in ein div in der Ansicht mit display none setzen und dann $ ('. PaginationLoader'). Show() in den js-code setzen. Aber das scheint einfach unnötig zu sein, und ein bisschen herumzuarbeiten, es muss sicherlich einen besseren Weg geben. Würde mich interessieren, wenn du dir was einfallen lassen könntest, danke! – tob88