6

Railsアプリケーションがあります。javascript1.js各ビューの一番下に含める必要のあるjavascript( )ファイルもあります。それを/assets/javascriptsフォルダーに入れました。Application.js次のコードが含まれています

//= require jquery
//= require jquery_ujs
//= some other files

//= require_directory . 

javascript1.jsに含まれていなくても、Application.js自動的に含まれますね。

では、どうすればやりたいことができますか?

4

1 に答える 1

8

javascriptの定義、包含、実行を分離します。

これが私がすることです:

  • コードを関数にラップしますjavascript1.js。javascriptファイルをいつ解釈するかは問題ではありません。そのファイルを解釈すると、後で使用するための関数が追加されるだけだからです。
  • 'javascript_footer'ビューをレイアウトに追加します(たとえば、render呼び出しまたはを介してjavascript_include_tag)。これは、すべてのビューに自動的に含まれます。
  • そのフッターで、で定義された関数を呼び出しますjavascript1.js

最初のコメントに応えて:

layouts/application.html.erbもちろん、手順1と3をスキップして、JavaScriptを使用して追加できます。

<%= javascript_include_tag "javascript1" %> 

(erbテンプレートを使用していて、ファイルがjavascript_include_tagメソッドが自動的に検出する場所にあると仮定します(http://guides.rubyonrails.org/layouts_and_rendering.htmlを参照)。

2番目のコメントへの応答:

確かに、あなたの最初のコメントに対する私の回答はそれを扱っていません。マニフェストファイルには何を含めるかが明示的にリストされているため、アセットパイプラインからファイルを除外する簡単な方法はありません。解決策は、を除くすべてを移動javascript1.jsassets/javascripts/all、に変更//= require_directory .すること//= require_directory allです。別の、醜いが実用的な解決策は//= require_self、下部に追加し、の内容をに追加することjavascript1.jsですapplication.js

于 2012-12-23T09:41:18.570 に答える