2

私は Rails 3.2 アプリケーションに取り組んでいますが、どういうわけか私の JavaScript コードが 2 回実行されてしまい、その理由がわかりません。

application.js ファイルを検索しましたが、パブリック フォルダー内ではなく、assets フォルダーにのみ含まれています。各 js ファイルのコピーも 1 つしかないので、アセット パイプラインが原因ではないはずです。

これは私の application.js ファイルです。

//= require jquery
//= require jquery_ujs
//= require jquery_nested_form
//= require jquery.ui.all
//= require myownjs
//= require_tree .

私は実際にjqueryのネストされたフォームなしでほぼ​​同様のプロジェクトを実行しましたが、問題は存在しないため、コードを繰り返し呼び出しているgemが原因であるか、JavaScriptの順序が原因である可能性があることがわかりましたが、私はWebプログラミングは初めてで、それが実際に意味があるかどうかはわかりません。ただし、ネストされたフォームのrequire行を削除しようとしましたが、違いはありませんでした。

エラーが何であるかを示唆して、誰かが私を助けてくれますか?

これは、他のプロジェクトの application.js です。

//= require jquery
//= require jquery_ujs
//= require jquery.ui.all
//= require myowncodes

//= require_tree .
4

2 に答える 2

4

//= require_tree .すでにディレクトリ内のすべてが含まれています。これは、ファイルが存在する.ディレクトリになりますapplication.js(通常は /app/assets/javascripts/)。あなたがリストした他のファイルの多くはすでにそのディレクトリにあり、それらのエントリはapplication.jsファイルから削除できると思います。

または、ロードする必要があるファイルを具体的にホワイトリストに登録する場合は//= require_tree .、application.js ファイルから削除します。

于 2013-01-06T17:04:12.023 に答える
2
//= require_tree .

この行は、application.js ファイルのフォルダー内のすべてのファイルをロードします。ロードされるファイルを完全に制御するには、上記の行を削除して個々の必要なファイルをロードするか、サブフォルダーを作成して使用することができます

//= require_directory <sub_directory_name>

これにより、そのフォルダー内のすべてのファイルが読み込まれます。このアプローチでは、指定したファイルのみがロードされます。アプリケーションでロードするファイルをより適切に制御するために、require_tree を使用しないことをお勧めします。

ここでは、 require_tree 行を削除すると問題が解決するはずです。役に立てば幸いです!!

于 2013-01-06T17:16:07.170 に答える