web-dev-qa-db-ja.com

JavaScriptからアセットパスを取得する

RailsアセットパイプラインにあるHTML5キャンバスに画像を表示する必要がありますが、JavaScriptからアセットのパスを知る必要があります。 js-routesを使用しています アプリケーションの他の部分の場合ですが、アセットパイプライン内の何かへのパスを取得する方法を提供していないようです。

JavaScriptからRailsアセット(画像など)へのパスを取得する正しい方法は何ですか?

21
senfo

Rails アセットパイプラインガイド )では、ERBでスタイルシートを前処理することにより、スタイルシートでアセットをコーディングする例を示しています。JavaScriptでも同じ手法を使用できます。ファイル名の末尾に.erbを追加します。

var someAssetPath = "<%= asset_path('some_image.png') %>";
23
BaronVonBraun

js_assets(Javascript helper in Rails projects) gem。まさにあなたが必要としているものだと思います。

ドキュメントから:

Javascriptでテンプレートapp/assets/javascripts/rubrics/views/index.htmlへのパスを取得します:var path = asset_path('rubrics/views/index.html')

9
pisaruk

.erbファイルの要素内のパスにデータ属性を追加し、それをJQueryで取得してみませんか?

some_template.html.erb内

<%= content_tag(:div, "", id: 'some-id', data:{path_to_asset: asset_path("some_image.png")}) %>

次にsome_javascript.jsで

var assetPath = $("#some-id").data("pathToAsset");
7
ryan2johnson9

HAMLを使用している場合は、次のことができます。

:javascript
   var assetPath = "#{asset_path('some_image.jpg')}";
6

Rails 4.1で同じ問題に遭遇し、 参照Railsコーヒースクリプトのアセット を使用しました-)画像用。追加のライブラリは必要ありません。

5
Artur Hebda