4

Rails 3+ とアセット パイプラインを使用すると、assets/javascripts の下にあるすべての javascript ファイルが自動的に含まれ、指定した場合に 1 つの js ファイルにコンパイルされることを理解しています。

require_tree . 

application.js で。

コントローラー/ビューに固有の JavaScript の処理に関するベスト プラクティスは何ですか? たとえば、コントローラー/ビュー「家」があり、jquery フォーム検証プラグインを使用して家のフォームを検証したいとします。これを行うには、houses.js ファイルに次のコードを配置しました。

$(document).ready(function(){
  $("#new_house_form").validate();
});

これは問題ありませんが、問題は、別のページ (/owners など) にアクセスすると、家のフォームを検証しようとし、javascript コンソールにエラー メッセージが表示されることです。もちろん、現在のページにフォームが存在するかどうかを確認してからバリデーターを呼び出すこともできますが、.ready にコントローラー固有のコードがたくさんある場合は、特に不潔に思えます。

これを回避するための私の解決策は、フォルダ assets/javascripts/global を application.js に作成することでした

 require_tree ./global //instead of require_tree .

house.js を除く他のすべての js ファイルを移動します。次に、ユーザーが /houses/new または /houses/edit にアクセスするたびに、houses.js を手動でインクルードします。

この慣行は受け入れられますか?そうでない場合、これらの状況に対処するためのベストプラクティスと考えられるものは何ですか?

4

1 に答える 1

0

通常は、すべてのjsをロードして、メソッドを呼び出す前に要素が存在するかどうかを確認します。

$(document).ready(function(){
  if($("#new_house_form").length > 0){
    $("#new_house_form").validate();
  }
});
于 2012-10-17T18:48:12.227 に答える