私は完全な初心者で、Rails のアセット パイプラインで JavaScript を使用する方法を理解しようとしています。たとえば、特定のビューで実行する単純な $(document).ready をどこに配置すればよいでしょうか。コードをビュー自体に配置しましたが、それは最善の方法ではないと思います。補完的な読み物もありがたいです、ありがとう。
3 に答える
という名前の新しいファイルを作成しますwhatever_you_want.js
。通常、ビューまたはモデルに従ってこれらを分割します。アセット パイプラインはすべてを 1 つの大きなファイルにまとめるので、最終的にはそれほど重要ではありません。ファイルへの分割は、好みや好みに合わせて調整できます。
したがって、whatever.js
必要な JS コードは何でも記述できます$(document).ready
。アセット パイプラインはあまり気にしません。記述するコードが必要な場合は$(document).ready
、それを使用してください。そうでない場合は、しないでください...
JS の作成が完了すると、Rails はデフォルトで、application.js
マニフェスト ファイルで指定したすべての js ファイルを取得し、記述した順序で 1 つのファイルに配置します。
だからそれは次のようになります
//= require jquery
//= require jquery_ujs
//= require twitter/bootstrap
//= require_tree .
したがって、最初にjquery、次にjquery ujs、次にbootstrap、次に、application.jsが存在する現在のディレクトリであるtreeをロードします
同様に、あなたができることは
//= require whatever.js
開発中、デフォルトでは、1 つの大きなファイルではなく、すべてのファイルが表示されます。これは、この方法でデバッグする方がはるかに簡単だからです。
本番環境にデプロイしたら、必要に応じて、アセット パイプラインを介してすべてのアセットをプリコンパイルするか、 gemrake assets:precompile
のようにデプロイ時に自動的にプリコンパイルするスクリプトを使用することができます。asset_sync
基本的に、js コードは js ファイルに、html コードはビュー ファイルに配置する必要があります。これは、sprockets (js などを圧縮する gem) がアセット ファイル/プリコンパイル対象ファイルにない JS を処理しないためです。
あなたの喜びのためのいくつかの補足的な読み物
http://guides.rubyonrails.org/asset_pipeline.html
http://railscasts.com/episodes/279-understanding-the-asset-pipeline
http://blog.55minutes.com/2012/02/untangling-the-rails-asset-pipeline-part-3-configuration/
何らかの形でお役に立てば幸いです
あなたの質問を何度か読んだ後、あなたが求めているのは「特定のビューに関連するjsコードをどこに置くか」であることがわかりました
さて、アセット パイプラインに慣れてきたので、それを操作する方法を理解できるようになりました。
あなたのファイルには、あなたが書きたいものは何でも書きます..あなたが持っていないと仮定しwhatever.js
ましょう。//=require_tree .
application.js
whatever.js
whatever.html.erb
whatever.html.erb
あなたが書くことができます
<% content_for :head do %>
<%= javascript_include_tag "whatever.js" %>
<% end %>
次に、レイアウト ファイル (内部のどこかに <%= yield %> を含むファイル) で、html の先頭に移動して次のように記述します。
<%= yield :head %>
名前の頭は基本的にあなたが望むものです。
これはRailsに次のように伝え"Hey man, this whatever.js file is for you.. just put it in the :head ok?"
、Railsは次のようになります"You got it mister!"
このようにして、必要なビューに必要な js ファイルを含めることができます。
しかし、あなたは完全な初心者だと言ったので、シンプルに保ち、最初にすべての js ファイルを含めることをお勧めします。html 要素に一意のクラスと ID を使用するだけで問題ありません。おそらく、これに同意しない人もいるでしょう。しかし、あなたは完全な初心者だと言ったので、私が何を言おうと、彼らが何を言おうと、あまり重要ではありません。あなたが理解しやすいものは何でもです。だからそれを試してみてください
これは、主題についての良い読み物です:http://railsapps.github.io/rails-javascript-include-external.html
すべての JavaScript は app/assets/javascript にある必要があります
また、特定のビュー用に個別の js ファイルを作成したり、js コードを application.js ファイルに記述したりできます。
このコードをレイアウト <%= javascript_include_tag "application" %> に配置します
最後に rake assets:precompile を実行します