asset_path
- 1.0.0
- 1.1.6
- 1.2.6
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.8
- 3.0.0
- 3.0.9
- 3.1.0
- 3.2.1
- 3.2.8
- 3.2.13
- 4.0.2 (0)
- 4.1.8 (0)
- 4.2.1 (0)
- 4.2.7 (0)
- 4.2.9 (0)
- 5.0.0.1 (0)
- 5.1.7 (38)
- 5.2.3 (0)
- 6.0.0 (0)
- 6.1.3.1 (4)
- 6.1.7.7 (0)
- 7.0.0 (0)
- 7.1.3.2 (0)
- 7.1.3.4 (0)
- What's this?
asset_path(source, options = {})
public
This is the entry point for all assets. When using an asset pipeline gem (e.g. propshaft or sprockets-rails), the behavior is “enhanced”. You can bypass the asset pipeline by passing in skip_pipeline: true to the options.
All other asset *_path helpers delegate through this method.
With the asset pipeline
All options passed to asset_path will be passed to compute_asset_path which is implemented by asset pipeline gems.
asset_path("application.js") # => "/assets/application-60aa4fdc5cea14baf5400fba1abf4f2a46a5166bad4772b1effe341570f07de9.js" asset_path('application.js', host: 'example.com') # => "//example.com/assets/application.js" asset_path("application.js", host: 'example.com', protocol: 'https') # => "https://example.com/assets/application.js"
Without the asset pipeline (skip_pipeline: true)
Accepts a type option that can specify the asset’s extension. No error checking is done to verify the source passed into asset_path is valid and that the file exists on disk.
asset_path("application.js", skip_pipeline: true) # => "application.js" asset_path("filedoesnotexist.png", skip_pipeline: true) # => "filedoesnotexist.png" asset_path("application", type: :javascript, skip_pipeline: true) # => "/javascripts/application.js" asset_path("application", type: :stylesheet, skip_pipeline: true) # => "/stylesheets/application.css"
Options applying to all assets
Below lists scenarios that apply to asset_path whether or not you’re using the asset pipeline.
-
All fully qualified URLs are returned immediately. This bypasses the asset pipeline and all other behavior described.
asset_path("http://www.example.com/js/xmlhr.js") # => "http://www.example.com/js/xmlhr.js"
-
All assets that begin with a forward slash are assumed to be full URLs and will not be expanded. This will bypass the asset pipeline.
asset_path("/foo.png") # => "/foo.png"
-
All blank strings will be returned immediately. This bypasses the asset pipeline and all other behavior described.
asset_path("") # => ""
-
If config.relative_url_root is specified, all assets will have that root prepended.
Rails.application.config.relative_url_root = "bar" asset_path("foo.js", skip_pipeline: true) # => "bar/foo.js"
-
A different asset host can be specified via config.action_controller.asset_host this is commonly used in conjunction with a CDN.
Rails.application.config.action_controller.asset_host = "assets.example.com" asset_path("foo.js", skip_pipeline: true) # => "http://assets.example.com/foo.js"
-
An extension name can be specified manually with extname.
asset_path("foo", skip_pipeline: true, extname: ".js") # => "/foo.js" asset_path("foo.css", skip_pipeline: true, extname: ".js") # => "/foo.css.js"