Rails 3.1 を使用する場合、「ページ固有の」JavaScript コードをどこに配置しますか? 質問する

Rails 3.1 を使用する場合、「ページ固有の」JavaScript コードをどこに配置しますか? 質問する

私の理解では、すべての JavaScript が 1 つのファイルにマージされます。Rails は、マニフェスト ファイル//= require_tree .の末尾に追加するときに、デフォルトでこれを実行します。application.js

これは本当に助かる機能のように思えますが、ページ固有の JavaScript コードについては少し心配です。このコードはすべてのページで実行されるのでしょうか? 1 ページでしか必要ないオブジェクトがすべてページごとにインスタンス化されるのは、最も避けたいことです。

また、コードが衝突する可能性もあるのではないでしょうか?

それとも、ページの JavaScript コードを実行するメソッドを呼び出すだけの小さなscriptタグをページの下部に配置しますか?

そうなると、require.js はもう必要ありませんか?

ありがとう

編集: すべての回答に感謝します...そして、それらは本当に問題の本質を捉えているとは思えません。スタイルに関するものもあり、関係がなさそうです...そして、他のものは単に言及しているだけですjavascript_include_tag...私はそれが存在していることを知っています (当然ですが...)。しかし、Rails 3.1 の今後のやり方は、各ページの下部に個別の JavaScript を読み込むのではなく、すべての JavaScript を 1 つのファイルにまとめることのようです。

私が思いつく最善の解決策は、特定の機能をs またはesdivのタグで囲むことです。JavaScript コードでは、 またはがページ上にあるかどうかを確認し、ある場合はそれに関連付けられた JavaScript コードを実行します。この方法では、動的要素がページ上にない場合、JavaScript コードは実行されません ( Sprockets によってパッケージ化された巨大なファイルに含まれている場合でも) 。idclassidclassapplication.js

上記のソリューションの利点は、検索ボックスが 100 ページのうち 8 ページに含まれている場合、その 8 ページでのみ実行されることです。また、サイト上の 8 ページに同じコードを含める必要もありません。実際、今後はサイトのどこにも手動でスクリプト タグを含める必要はありません。

これが私の質問に対する本当の答えだと思います。

ベストアンサー1

Asset Pipeline のドキュメントでは、コントローラー固有の JS を実行する方法が提案されています。

たとえば、 が生成されると、 に新しいファイルが作成され、 に別のProjectsControllerファイルが作成されます。コントローラに固有の JavaScript または CSS は、それぞれのアセット ファイル内に配置する必要があります。これにより、またはなどの行を使用して、これらのファイルをこれらのコントローラ専用に読み込むことができるようになります。app/assets/javascripts/projects.js.coffeeapp/assets/stylesheets/projects.css.scss<%= javascript_include_tag params[:controller] %><%= stylesheet_link_tag params[:controller] %>

リンク先: asset_pipeline

おすすめ記事