ActionView::Helpers::AssetUrlHelper

alias: url_to_asset

def asset_url(source, options = {})

説明

アセットの URL の文字列を返します。

options の protocol を :request にして、asset_path を呼びます。ホストの部分のほかは、asset_path と同じです。image_url、javascript_url、stylesheet_url、audio_url、video_url、font_url は、options の type にそれぞれの種類を入れて、このヘルパーを呼びます。

引数

値を変えると、ERB と HTML が変わります。

asset_path と同じく、パスにしてから、前にホストを付けます。渡す値によって、次のように変わります。
  • URL(https:// のような 〜://、//、data:、cid: で始まる文字列):そのまま返します。
  • / で始まる文字列("/photo.png"):そのままパスにして、前にホストを付けます。
  • それ以外の文字列("logo.png"):アセット(app/assets の中のファイル)を探し、ファイル名にハッシュを付けたパスにします。見つからなければ、Propshaft::MissingAssetError になります。探してハッシュを付けるのは Propshaft の動きで、アセットの仕組みを入れていないアプリでは、探さずに /(種類が決まっていれば、/images/ などのフォルダ)を前に付けたパスにします。
? や # から後ろの部分は(後ろに 1 文字以上あるとき)、いったん外してパスを作り、最後に付け直します。空の文字列なら空の文字列を返し、nil なら ArgumentError になります。
options= {}
アセットの種類です。渡す値によって、次のように変わります。
  • :javascript、:stylesheet:source の拡張子が .js か .css でないときに、後ろに付けます("application" は application.css を探します。"logo.png" は logo.png.css を探すので、Propshaft::MissingAssetError になります)。
  • skip_pipeline も渡したとき:種類ごとのフォルダ(:image なら /images)を前に付けます。
  • ほか:Propshaft はアセットを種類で分けないので、パスは変わりません(アセットの仕組みを入れていないアプリでは、skip_pipeline がなくてもフォルダを付けます)。
".css"
type で決まる拡張子の代わりに、渡した拡張子を、source の拡張子と違うときに後ろに付けます。"logo.png" に付けると logo.png.css を探すので、Propshaft::MissingAssetError になります。false を渡すと、type が :javascript などでも、拡張子を付けません。
true にすると、アセットを探さず、/ を前に付けたパスにします(type も渡したときは、/images/ などの種類ごとのフォルダ)。public の中のファイルを指すときに使います。
"cdn.example.com"
パスの前に付けるホストです。デフォルトは config.asset_host の値で、それもなければ今のリクエストのホスト(このサイトでは、このページのホスト)です。リクエストがないところ(メーラーなど)では、config.asset_host がなければホストを付けずにパスを返し、host を渡すと NoMethodError になります。https:// などで始まらないホストには、今のリクエストの形(http:// か https://)を前に付けます。%d を入れると、パスごとに決まる 0 から 3 の数に置き換えます。
渡しても使いません。いつも :request で上書きします。
ここにない options は、使いません。

ERB

直前との違い: 追加 削除 変更


          

HTML