Rails: How to reference images in CSS within Rails 4

heroku, ruby-on-rails, ruby-on-rails-4

Solution

Sprockets together with Sass has some nifty helpers you can use to get the job done. Sprockets will only process these helpers if your stylesheet file extensions are either `.css.scss` or `.css.sass`.

Image specific helper:

background-image: image-url("logo.png")

Agnostic helper:

background-image: asset-url("logo.png", image)
background-image: asset-url($asset, $asset-type)

Or if you want to embed the image data in the css file:

background-image: asset-data-url("logo.png")

Problem

There's a strange issue with Rails 4 on Heroku. When images are compiled they have hashes added to them, yet the reference to those files from within CSS don't have the proper name adjusted. Here's what I mean. I have a file called logo.png. Yet when it shows up on heroku it is viewed as: ``` /assets/logo-200a00a193ed5e297bb09ddd96afb953.png ``` However the CSS still states: ``` background-image:url("./logo.png"); ``` The result: the image doesn't display. Anybody run into this? How can this be resolved?

Original source