リッチクライアント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にあります。