2012-07-12 16 views
12

Bazı Javascript işlevlerini Haml görünümüne dahil etmek istiyorum ancak her görünüme eklenmesini istemiyorum. Javascript dosyasını public/javascripts içine koymalı mıyım yoksa onu app/assets/javascripts içine koymalı mıyım ki onu saklamıyorum ve hala haml view dosyasından referans alınabilir mi?Javascript dosyasını Haml görünümüne nasıl aktarırsınız?

Mümkün olduğunda bu iki seçeneği nasıl kullanırsınız? tek bir yerden özgü olduğunda,

cevap

26

sadece

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

İşe yaradı! Çok teşekkür ederim! –

8

Doğrudan

Dahil size görünümünde sonra content_for

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

Ve kullanmalıdır,

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

kullanmalıdır

Eğer Haml doğrudan dahil javascript istiyorsanız, :javascript

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

Kısmi bir içine koyabilirsiniz kullanmak ve sonra sadece temiz görüşlerinizi tutmak için kısmi hale getirebilir. Sadece javascript başvuru ve tarayıcı bunu çekmek olmasını istiyorsanız

Referans O

, her zaman gibi javascript_include_tag kullanmalıdır. Burada, javascript dosyasını, application.js manifest'ine gerek duymak yerine bir manifest yapmalısınız. (Senin Haml olarak) http://guides.rubyonrails.org/asset_pipeline.html

uygun bir şekilde, application.rb içinde config.assets.precompile için apaçık eklemeyi unutmayın:

= javascript_include_tag 'somefile' 

(config/application.rb):

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

Bu da çok yararlı, yanıt vermek için zaman ayırdığınız için teşekkür ederim. –

+0

Bu iki çözümden daha modern mi? 'Varlık boru hattını' ifade ettin, ben de öyle olduğuna inanmaya başladım. – Ziggy

+0

@Ziggy diğer çözümü de şablon değiştirerek belirli javascript dosyalarını (başlıkta) dahil etmek için bir yol sağlar. –

0

ise senin javascript küçük ve dürüstçe basit, javascript doğrudan HAML içeriklerini öneririm:

:javascript 
    alert('hi hi!') 

Aksi takdirde varlık boru hattını kullanmalısınız. Javascript'lerin pre-processed, compressed and minified olduğundan emin olur. Ayrıca, javascript'lerinizi iyi organize etmenize yardımcı olur (örneğin, komut dosyalarınız ve satıcı komut dosyalarınız arasındaki ayrım) ve kolayca test edilebilir (jasmine//evergreen gibi test çerçeveleriyle). Varlık boru hattında yeniyseniz, here iyi bir okuma =)

İlgili konular