2011-08-04 16 views
0

/public/javascripts/testというフォルダにJavascriptがたくさんあり、できるだけ少ない行でjavascript_include_tagを使ってレイアウトに入れたいと思います。javascript_include_tagとJSフルのサブフォルダを使って

現在、私はjavascript_include_tagを使用してコードの25行を持って、これより良いを行うにはどのような方法はありますか?また、私は含まれたくない他のディレクトリにいくつかのJSファイルがあるので、javascript_include_tag :all :recursiveを使用することはできません。

ありがとうございました。

UPDATE:私はfollwingしている私のレイアウトで今

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/",'')} 

<%= javascript_include_tag :syntax_highlight %> 
だから今、私はこのコードの一行(非常に長い)を持つjavascript.rb初期化子を持っています

今、私はページをレンダリングするとき、私は、次を得る:

<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> 

しかし、何らかの理由でこれのどれも動作しませんか?何がありますか?

答えて

1

はおそらくそのためにも、よりよい解決策はありますが、これはまだトリックを行います:

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

これは機能しません。ページが本当に変わってしまいます - JavaScriptの文字列はになります – aren55555

1

config.action_view.javascript_expansions[:defaults] = %w(javascript1.js javascript2.js) 
この行のconfig/application.rb

コメントを解除して、この

を試してみてください

などのファイル名を追加します(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 %> 
関連する問題