2012-07-12 4 views
12

Haml보기에 일부 Javascript 기능을 포함하고 싶지만 모든보기에 삽입하지 않으려합니다. Javascript 파일을 public/javascript에 넣어야합니까? 아니면 app/assets/javascripts에 넣으면 사용자로부터 숨겨 지도록 할 수 있습니까? haml 뷰 파일 내에서 여전히 참조 할 수 있습니까?Javascript 파일을 Haml보기로 가져 오는 방법은 무엇입니까?

가능한 경우이 두 가지 옵션을 모두 수행 하시겠습니까? 이 한 장소에 특정의 경우

답변

26

당신은

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

고마워요! –

8

가 직접

을 포함 당신이보기에 다음 content_for

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

그리고를 사용해야

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

를 사용한다

당신이 HAML에 직접 포함 자바 스크립트를 원하는 경우에, 당신은 :javascript

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

당신이 부분에이를 넣을 수 있습니다 사용 후 바로 깨끗한 의견을 유지하는 부분을 렌더링 할 수 있습니다. 당신은 그냥 자바 스크립트를 참조하고 브라우저가 그것을에서 끌어 갖고 싶어

참조 그것은

, 당신은 항상 같은 javascript_include_tag을 사용해야합니다. 여기서 javascript 파일을 application.js 매니페스트에 입력하는 대신 매니페스트로 설정해야합니다. (당신의 HAML에) http://guides.rubyonrails.org/asset_pipeline.html

에 따라, 당신의 application.rb에 config.assets.precompile에 매니페스트를 추가해야합니다 :

= javascript_include_tag 'somefile' 

(설정에서/application.rb) :

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

이것은 매우 도움이됩니다. 응답 시간을내어 주셔서 감사합니다. –

+0

이 두 가지 솔루션 중 가장 현대적인 것입니까? 당신은 '자산 파이프 라인'이라는 문구를 말했어 그래서 나는 그것이 믿어 지도록 움직입니다. – Ziggy

+0

@Ziggy 다른 솔루션은 템플릿을 수정하여 헤더에 특정 자바 스크립트 파일을 포함하는 방법을 제공합니다. –

0

하는 경우 귀하의 자바 스크립트는 작고 단순한, 나는 암시에 직접 자바 스크립트를 포함 제안 :

:javascript 
    alert('hi hi!') 

그렇지 않으면 자산 파이프 라인을 사용해야합니다. 귀하의 자바 스크립트가 pre-processed, compressed and minified인지 확인합니다. 또한 자바 스크립트를 잘 구성하고 (예 : 스크립트와 공급 업체 스크립트 간의 분리) 쉽게 테스트 할 수 있습니다 (jasmine/jasminerice/evergreen과 같은 테스트 프레임 워크 사용). 자산 파이프 라인을 처음 사용하는 경우 here은 좋은 읽을 거리입니다. =)

관련 문제