2012-07-12 12 views
12

Chcę włączyć funkcjonalność JavaScript w widoku Haml, ale nie chcę go wstawiać do każdego widoku. Czy muszę umieścić plik JavaScript w public/javascripts, czy mogę umieścić go w app/assets/javascripts, aby ukryć go przed użytkownikiem i nadal odwoływać się do niego w pliku widoku haml?Jak zaimportować plik JavaScript do widoku Haml?

Jak można wykonać obie te opcje, jeśli są one możliwe?

Odpowiedz

26

należy po prostu użyć

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

jeśli jest to specyficzne dla jednego miejsca, należy użyć content_for

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

, a następnie w widoku

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

To zadziałało! Dziękuję Ci bardzo! –

8

Dołącz Bezpośrednio

Jeśli chcesz javascript włączone bezpośrednio do haml, można użyć :javascript

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

Można umieścić to na częściowe, a potem po prostu renderowanie częściowe zachować swoje poglądy czyste.

referencyjny To

Jeśli chcesz po prostu odwołać JavaScript i mieć przeglądarka ciągnąć go, należy użyć javascript_include_tag jak zawsze. Tutaj musisz uczynić plik javascript manifestem, zamiast wymagać go w manifeście application.js. Pamiętaj, aby dodać manifest do config.assets.precompile w environment.rb, według http://guides.rubyonrails.org/asset_pipeline.html

(w haml):

= javascript_include_tag 'somefile' 

(w config/environment.rb):

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

Jest to również bardzo pomocne, dziękuję za poświęcenie czasu na odpowiedź. –

+0

Czy to jest bardziej nowoczesne z dwóch rozwiązań? Powiedziałeś wyrażenie "asset pipeline", więc jestem przekonany, że tak jest. – Ziggy

+0

@Ziggy inne rozwiązanie zapewnia także możliwość włączenia niektórych plików javascript (w nagłówku) poprzez modyfikację szablonu. –

0

Jeśli Twój javascript jest mały i prosty, sugeruję javascript bezpośrednio w HAML:

:javascript 
    alert('hi hi!') 

W przeciwnym razie należy użyć potoku aktywów. Zapewnia, że ​​twoje javascripts są pre-processed, compressed and minified. Pomaga również dobrze zorganizować javascripts (np. Oddzielenie skryptów od skryptów dostawcy) i łatwo je przetestować (przy użyciu frameworków testowych, takich jak jasmine/jasminerice/evergreen). Jeśli jesteś nowicjuszem w zakresie przesyłania aktywów, here to dobra lektura =)

Powiązane problemy