2012-07-12 12 views
12

Desidero includere alcune funzionalità Javascript in una vista Haml, ma non voglio che venga inserita in ogni vista. Devo inserire il file Javascript in public/javascripts o posso inserirlo in app/assets/javascripts per tenerlo nascosto all'utente e fare ancora riferimento all'interno del file di visualizzazione haml?Come si importa un file Javascript in una vista Haml?

Come fareste entrambe le opzioni se sono possibili?

risposta

26

Si dovrebbe solo utilizzare

!!! 
%html 
    %head 
    = javascript_include_tag "my_js_file" 

se è specifico per un posto, è necessario utilizzare content_for

!!! 
%html 
    %head 
    = yield(:javascripts) 

E poi secondo lei

- content_for :javascripts do 
    = javascript_include_tag "my_js_file" 
+0

Ha funzionato! Grazie mille! –

8

Includere Direttamente

Se si desidera che il javascript incluso direttamente nel Haml, è possibile utilizzare :javascript

:javascript 
    $(function() { alert("js inside haml"); } 

si può mettere questo in un parziale e poi basta rendere il parziale per mantenere le vostre opinioni puliti.

Riferimento E

Se si vuole solo fare riferimento javascript e avere il browser tirarlo in, si dovrebbe usare javascript_include_tag come sempre. Qui, dovrai rendere visibile il file javascript, invece di richiederlo nel manifest application.js. Ricordarsi di aggiungere il manifesto per config.assets.precompile nel vostro application.rb, secondo http://guides.rubyonrails.org/asset_pipeline.html

(nel vostro Haml):

= javascript_include_tag 'somefile' 

(in config/application.rb):

config.assets.precompile += ['somefile.js'] 
+0

Anche questo è molto utile, grazie per aver dedicato del tempo a rispondere. –

+0

È questa la più moderna delle due soluzioni? Hai detto la frase "asset pipeline" quindi sono commosso nel credere che sia così. – Ziggy

+0

@Ziggy l'altra soluzione offre anche un modo per includere determinati file javascript (nell'intestazione) modificando il modello. –

0

Se il tuo javascript è piccolo e molto semplice, ti suggerisco di includere javascript direttamente in HAML:

:javascript 
    alert('hi hi!') 

Altrimenti dovresti usare la pipeline delle risorse. Si assicura che i tuoi javascript siano pre-processed, compressed and minified. Aiuta anche a mantenere i javascript ben organizzati (ad esempio la separazione tra script e script del fornitore) e facilmente testabile (con framework di test come jasmine//evergreen). Se sei nuovo alla pipeline delle risorse, here è una buona lettura =)

Problemi correlati