Rails 3.1 アプリの場合、サイト全体の JavaScript の一部は、特定のリアルタイムのインスタンス固有の条件が満たされた場合にのみ含まれます。これは、新しいアセット パイプラインの application.js に配置できないことを意味します。これは、現在のコンテキスト内に埋め込まれた Ruby について erb によって解析されないためです。基本的に、ログインしている current_user に基づいて、キーボード ショートカットを含めています。
私の質問: コードが埋め込まれたこの JavaScript をどこに移動すれば、適切なコンテキスト (つまり、現在ログインしているユーザー) でページ アクセスごとに埋め込み Ruby が引き続き解析されるようになりますか?
答えは、一番下の application.html.erb レイアウト ビューに配置するだけのようですが、これは、直感的でない場所に JavaScript コードを隠しているように見えます。
application2.js.erb ファイルを作成しようとしましたが、未定義の変数に関するエラーが発生しました。これは、出力がキャッシュされる前にアセット エンジンがこのファイルを 1 回だけ解析し、スコープがまだ正しくないためであると考えられます。 current_user のようなもの。
したがって、ここでは application.html.erb を使用しても問題なく動作します。これは、機能的に動作させる方法の問題ではありません。代わりに、ここでアセット パイプライン モデルを要件に組み込み、JavaScript のほとんどを assets/javascripts ディレクトリに保持する、より洗練された方法があるかどうか疑問に思っています。