リッチクライアントRailsアプリケーションは、クライアント側のテンプレートを使用します。 これらのテンプレートがAsset Pipelineを使用して処理される場合、テンプレートへのアクセス方法に関する疑問が生じます。 実稼働環境では、ファイルへのパスは名前とmd5ハッシュで構成されます。 正しいパスを取得する1つの方法は、必要なヘルパー
<%= asset_path(path/to/template.html) %>
が使用できる
Erb
プリプロセッサーでJavaScriptをラップすることです
より美しいソリューションを紹介します。
クライアント側でテンプレートが使用されるアプリケーションを考えてみましょう。 テンプレートのプリプロセッサはスリム[
1 ]です。 プロジェクトでソースコードを整理する方法には焦点を当てません。 すべてのテンプレートを
app/assets/webapp/
ます。 テンプレートディレクトリから
*.html.slim
テンプレートを
*.html.slim
するようにアプリケーションを構成します。
特定のテンプレート
app/assets/webapp/rubrics/edit.html.slim
を作成し、JavaScriptからアクセスしたいと思います。 実稼働環境にはそのようなファイルは存在しないため、アドレス
/assets/rubrics/edit.html
に連絡することはできませんが、何か
/assets/rubrics/edit-5eb3bb250d5300736006c8944e436e3f.html
が存在することになります。 論理パス
rubrics/edit.html
とフルパスの対応表は、自動的に生成されるマニフェストファイルにあります。 しかし、それを使用することは常に正当化されるわけではなく、少なくとも多くの追加データが含まれます。
Gem
js_assets
、特定のマスクに一致するファイルの対応表を作成する問題を解決します。
gemをインストールしたら、JavaScriptヘルパーを接続します。
window.project_assets
テーブルは、変数
window.project_assets
保存されます。
asset_path
ヘルパー
asset_path
は、必要なファイルへの論理パスを引数として受け取り、環境を考慮して、ルートに相対的なパスを返します。
var path = asset_path('rubrics/edit.html')
ヘルパーの使用可能なファイルのリストの管理(アセットパイプライン処理を考慮)は、フィルターを介して行われます。 デフォルト値は次のとおりです。
JsAssets::List.exclude = ["application.js"] JsAssets::List.allow = ["*.html"]
たとえば、
initializers
を使用して、それらを展開でき
initializers
。
gemのソースコードは
githubにあります。