2012-06-20 10 views
5

Rails 3.1 richiede ora di utilizzare image_tag durante il rendering di un'immagine utilizzando la pipeline di asset.Come eseguire il rendering di immagini in Javascript con Rails 3.1

Ho creato scroll infiniti nella mia applicazione e ho inserito il codice in un file js.coffee. Desidero rendere una gif con caricamento a rotazione mentre vengono caricati più prodotti. Non posso usare image_tag qui perché questo file non supporta il codice di rails, ma l'ho scritto qui per capire cosa sto cercando di fare.

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

In precedenza, avrei semplicemente scritto in HTML puro, utilizzando <img src=... Ma questo non funzionerà più con il gasdotto di asset. Come posso raggiungere questo obiettivo?

risposta

5

L'utilizzo di HTML semplice dovrebbe funzionare correttamente.

Provare a utilizzare: <img src="/assets/loading.gif" /> se il loading.gif è all'interno di assets/images.

AGGIORNAMENTO 21/06/2012

Come per la Ruby on Rails Guide, Section 2.2.3, cambiando l'estensione del file .js dei vostri file da filename.js.erb o filename.js.coffee.erb vi permetterà di utilizzare rubino incastonato all'interno del javascript.

È quindi possibile utilizzare l'helper asset_path per accedere al percorso in cui sono memorizzate le risorse.

+1

Questo non funzionerà solo in produzione se includo la parte di impronte digitali? Dovrebbe essere qualcosa come tob88

+0

Hmm, buon punto. Non ci avevo pensato, dato che stavo solo giocando con qualcosa nel mio ambiente di sviluppo. Ne darò un'occhiata qui a breve. – Zajn

+0

Significo che potrei mettere il image_tag in un div nella vista con display none e quindi mettere $ ('. PaginationLoader'). Show() nel codice js. Ma questo sembra non necessario, e un po 'di lavoro in giro, ci deve sicuramente essere un modo migliore. Sarebbe interessato se tu fossi in grado di inventare qualcosa, grazie! – tob88