CSS ファイルでは、次を使用して画像アセットの適切な名前を (フィンガープリントで) 取得できます。
background-image: url(image-url("rails.png"))
しかし、JavaScript ファイルからどのように同じことを行うのでしょうか?
CSS ファイルでは、次を使用して画像アセットの適切な名前を (フィンガープリントで) 取得できます。
background-image: url(image-url("rails.png"))
しかし、JavaScript ファイルからどのように同じことを行うのでしょうか?
sass ヘルパー メソッドを使用しているようです。
標準の (非 Sass) CSS では、次のようにします。
.class { background-image: url(<%= asset_path 'image.png' %>) }
CSS ファイルには、拡張子に erb を追加する必要があります。
file_name.css.erb
JavaScript の場合、同じ規則が適用されます。
file_name.js.erb
およびファイル内:
var image_path = '<%= asset_path 'image.png' %>'
Railsアセット パイプライン ガイドは、これらの機能の使用方法に関する優れた情報源です。
Rails 4 では、js.erb
ビューを使用する代わりにアセット パイプラインに固執し、gon やその他の手法を使用する代わりに変数を使用して URL を渡すことをお勧めします: Ruby on Rails - Send JavaScript variable from controller to external Javascript資産ファイル
とgon
:
アプリ/ビュー/レイアウト/application.html.erb:
<head>
<meta charset="utf-8"/>
<%= include_gon %>
アプリ/コントローラー/application_controller.rb:
before_filter { gon.path = asset_path 'image.png' }
app/assets/javascripts/file.js.coffee:
alert gon.path
ファイルは起動時に 1 回だけプリコンパイルされ、Rails ではなくサーバーによって提供され、残りの Js と同じ HTTP リクエストで処理されるため、この方法は高速です。