2011-08-04 5 views
0

/public/javascripts/test 아래의 폴더에 여러 개의 자바 스크립트가 있습니다. 가능한 한 적은 수의 행에 javascript_include_tag을 사용하여 레이아웃에 포함하고 싶습니다.JS로 가득 찬 하위 폴더로 javascript_include_tag 사용

현재 나는이 코드를 javascript_include_tag을 사용하여 25 줄 사용하고 있습니다. 더 좋은 방법이 있습니까? 또한 포함되지 않으려는 다른 디렉토리에 JS 파일이 있기 때문에 javascript_include_tag :all :recursive을 사용할 수 없습니다.

도움 주셔서 감사합니다.

UPDATE : 나는이 한 줄 코드 (매우 긴)이있는 javascript.rb 초기화가 이제 :

ActionView::Helpers::AssetTagHelper.register_javascript_expansion :syntax_highlight => Dir["#{Rails.root.to_s}/public/javascripts/sh/*.js"].each {|js| js.gsub!("#{Rails.root.to_s}/public/javascripts/",'')} 

지금 내 레이아웃에 내가 가진를 follwing을 :

<%= javascript_include_tag :syntax_highlight %> 

<script src="/javascripts/sh/shAutoloader.js?1278089940" type="text/javascript"></script> 
<script src="/javascripts/sh/shBrushAppleScript.js?1278089940" type="text/javascript"></script> 
<script src="/javascripts/sh/shBrushAS3.js?1278089940" type="text/javascript"></script> 
<script src="/javascripts/sh/shBrushBash.js?1278089940" type="text/javascript"></script> 
<script src="/javascripts/sh/shBrushColdFusion.js?1278089940" type="text/javascript"></script> 
<script src="/javascripts/sh/shBrushCpp.js?1278089940" type="text/javascript"></script> 
<script src="/javascripts/sh/shBrushCSharp.js?1278089940" type="text/javascript"></script> 
<script src="/javascripts/sh/shBrushCss.js?1278089940" type="text/javascript"></script> 
<script src="/javascripts/sh/shBrushDelphi.js?1278089940" type="text/javascript"></script> 
<script src="/javascripts/sh/shBrushDiff.js?1278089940" type="text/javascript"></script> 
<script src="/javascripts/sh/shBrushErlang.js?1278089940" type="text/javascript"></script> 
<script src="/javascripts/sh/shBrushGroovy.js?1278089940" type="text/javascript"></script> 
<script src="/javascripts/sh/shBrushJava.js?1278089940" type="text/javascript"></script> 
<script src="/javascripts/sh/shBrushJavaFX.js?1278089940" type="text/javascript"></script> 
<script src="/javascripts/sh/shBrushJScript.js?1278089940" type="text/javascript"></script> 
<script src="/javascripts/sh/shBrushPerl.js?1278089940" type="text/javascript"></script> 
<script src="/javascripts/sh/shBrushPhp.js?1278089940" type="text/javascript"></script> 
<script src="/javascripts/sh/shBrushPlain.js?1278089940" type="text/javascript"></script> 
<script src="/javascripts/sh/shBrushPowerShell.js?1278089940" type="text/javascript"></script> 
<script src="/javascripts/sh/shBrushPython.js?1278089940" type="text/javascript"></script> 
<script src="/javascripts/sh/shBrushRuby.js?1278089940" type="text/javascript"></script> 
<script src="/javascripts/sh/shBrushSass.js?1278089940" type="text/javascript"></script> 
<script src="/javascripts/sh/shBrushScala.js?1278089940" type="text/javascript"></script> 
<script src="/javascripts/sh/shBrushSql.js?1278089940" type="text/javascript"></script> 
<script src="/javascripts/sh/shBrushVb.js?1278089940" type="text/javascript"></script> 
<script src="/javascripts/sh/shBrushXml.js?1278089940" type="text/javascript"></script> 
<script src="/javascripts/sh/shCore.js?1278089940" type="text/javascript"></script> 
<script src="/javascripts/sh/shLegacy.js?1278089940" type="text/javascript"></script> 
,369 : 나는 페이지를 렌더링 할 때

지금 나는 다음과 같은 수

하지만 어떤 이유로이 작품의 아무도? 뭐라 구요?

답변

1

은 아마 그것을위한 솔루션 더 나은있다, 그러나 이것은 여전히 ​​트릭을 할 것입니다 :

Dir["#{Rails.root.to_s}/public/javascripts/test/*.js"].each {|js_file| javascript_include_tag js_file } 
+0

이는 작동하지 않습니다. 페이지가 실제로 이상하게 렌더링됩니다. 자바 스크립트 문자열은 으로 끝납니다. – aren55555

1

는 설정에서이

시도를/application.rb

주석이 라인

config.action_view.javascript_expansions[:defaults] = %w(javascript1.js javascript2.js) 

등의 파일 이름을 추가하십시오 (예 : javascrip1.js 및 javascrip2t.js). 등등.

그런 다음보기에/레이아웃

<%= javascript_include_tag :defaults %> 

블라드 Khomich의 대답은 또한 훌륭한이고 작동이 줄을 추가합니다.

1

많은 js 파일을 포함하고 있다고 생각하면 모든 js 파일을 공개 디렉토리 아래에 포함하고자한다고 가정합니다. 이 경우, 당신이 요청을 많이 절약, 당신이 생산 한 것과 전체 파일을 제공 도움이 될 것입니다, 다음과 같이 javascript_include_tag에서 변경할 수 있습니다

javascript_include_tag :all, :recursive => true, :cache => true 

당신이 saperately 테스트 파일을 치료하려면를, register_javascript_expansion:defaults과 같이 사용할 수 있으며 Vlad Khomich의 답변 코드도 사용할 수 있습니다.

# config/init/javascript.rb 
ActionView::Helpers::AssetTagHelper.register_javascript_expansion :tests => [array_of_js_paths_from_previous_answer] 

# application.html.erb 
<%= javascript_include_tag :tests, :cache => :tests %> 
관련 문제