1

別のコーヒースクリプトファイルのクラスをインスタンス化するモデルのentreeコーヒースクリプトファイルがあります。

jQuery(document).ready ->
  ch = new CepageHandling
  ch.handleKeyPress()

この関数は、コントロール上のイベントをhandlePressキャプチャします。keyup

vin同じ機能を有効にしたい別のモデルがあります。vinモデルのコーヒースクリプトが完全に空であっても、何もする必要がない(すでに同じhtmlを持っている)のを見て驚いています。それはすでに機能しています。entreeこのページにいないときでも、作成されたjavascriptが呼び出されると思います。

ファイルでも同じ動作が見られscssます。記述子が一致すると、あるモデルに定義されたスタイルが他のモデルに適用されます。これがアセットがレールに分離されていないという通常の動作である場合、誰かが説明(またはいくつかの記事を指す)できますか?私はそれがどのように機能するかを理解するのに本当に苦労しています。

4

2 に答える 2

1

デフォルトのマニフェストファイル(application.jsなど)はrequire_tree .、すべてのページのすべてのファイルをロードし、本番環境でそれらをすべてまとめるなどします。物事を分離したい場合は、readyハンドラーにテストを入れて、このコードをスキップする必要があります。場合によっては、application.jsページごとにコードをサイロ化するために、より多くのマニフェストが必要になります(たとえば使用しないでください)。アセットパイプラインRailsガイドのすべての単語を注意深く読むことをお勧めします...必読です!

于 2012-06-20T17:23:31.747 に答える
1

これは、マニフェストファイルapplication.jsが原因で発生します。より正確には、次のコード行にあります。

//= require_tree .

これが意味するのは、 / Assets /javascripts/フォルダー内に含まれるすべての.jsファイルがビューにロードされるということです。 entree.jsはすでに読み込まれており、JQueryドキュメントレディ関数を使用しているためすべてのビュー内でファイルのルールを検索します。 これは、このch要素を含むすべてのページが同じ動作をすることを意味します。

于 2012-06-20T17:23:46.007 に答える