22

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

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

4

6 に答える 6

25

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

var someAssetPath = "<%= asset_path('some_image.png') %>";
于 2012-11-15T16:04:42.563 に答える
9

js_assets(RailsプロジェクトのJavascriptヘルパー) gemをチェックアウトしてください。まさにあなたが必要としているものだと思います。

ドキュメントから:

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

于 2014-05-02T17:03:36.343 に答える
7

.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");
于 2014-11-03T03:20:28.047 に答える
6

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

:javascript
   var assetPath = "#{asset_path('some_image.jpg')}";
于 2014-05-15T23:00:26.203 に答える
4

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

于 2014-10-13T07:39:25.187 に答える
0

私の場合、スタイルシートのパスを取得したかったのですが、railsがキャッシュバスティング用に生成するハッシュにより、ハードコーディングが不可能になりました。

私にとって非常にうまく機能したのは、html(レイアウト)のメインスタイルシートリンク要素にIDを割り当ててから、javascriptを使用してhrefを抽出することです。基本アセットパスが必要な場合は、必要なデータを属性として使用して汎用要素を作成することもできます。

レンダリングされたHTML

<link rel="stylesheet" href="mypath/main.css" type="text/css" id="main-css">

JS

$("#main-css").attr("href"); // "mypath/main.css"
于 2020-06-05T14:38:10.883 に答える