RailsアセットパイプラインにあるHTML5キャンバスに画像を表示する必要がありますが、JavaScriptからアセットのパスを知る必要があります。 js-routesを使用しています アプリケーションの他の部分の場合ですが、アセットパイプライン内の何かへのパスを取得する方法を提供していないようです。
JavaScriptからRailsアセット(画像など)へのパスを取得する正しい方法は何ですか?
Rails アセットパイプラインガイド )では、ERBでスタイルシートを前処理することにより、スタイルシートでアセットをコーディングする例を示しています。JavaScriptでも同じ手法を使用できます。ファイル名の末尾に.erb
を追加します。
var someAssetPath = "<%= asset_path('some_image.png') %>";
js_assets(Javascript helper in Rails projects) gem。まさにあなたが必要としているものだと思います。
ドキュメントから:
Javascriptでテンプレートapp/assets/javascripts/rubrics/views/index.htmlへのパスを取得します:
var path = asset_path('rubrics/views/index.html')
.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");
HAMLを使用している場合は、次のことができます。
:javascript
var assetPath = "#{asset_path('some_image.jpg')}";
Rails 4.1で同じ問題に遭遇し、 参照Railsコーヒースクリプトのアセット を使用しました-)画像用。追加のライブラリは必要ありません。