Asset - Pipeline

Hello guys,

I tried to get an image-background working within my page, but I was
wrong...

I´m using rails 3.2.3, ruby 1.9.3 p125.

thats a part of my css file (app/assets/stylesheets/custom.css.scss):

body {
        padding-top: 70px;
        background: url(<%= asset_path 'background.png' %>);
}

and if i try to access the page, rails server sais

ActionView::Template::Error (Invalid CSS after " background:
url(": expected ")", was "<%= asset_path ..."
  (in
/home/basti/website/Azubiware_2.0/app/assets/stylesheets/custom.css.scss)):
    2: <html>
    3: <head>
    4: <title>Azubiware 2.0 | <%= @title %></title>
    5: <%= stylesheet_link_tag "application", media: "all" %>
    6: <%= javascript_include_tag "application" %>
    7: <%= csrf_meta_tags %>
    8: <!--[if lt IE 9]>
  app/assets/stylesheets/custom.css.scss:9
  app/views/layouts/application.html.erb:5:in
`_app_views_layouts_application_html_erb___3677715865169271541_23617180'

Any idea how to get this background foo working?

Very thanksfull for every hint!

Basti

Here an example line from one of our scss files:

        background: image-url("email_icon.png") no-repeat 0px 4px;

Try that?

that worked for me :slight_smile: yeah.. you made my evening! thanks

To run the first code you tried you need to add the .erb extension. Otherwise, it’s like running ruby code in a css/html file or whatever. It doesn’t work :slight_smile:

The assets pipeline works like this:

example.css.scss => Interprets scss first and serves the css file.

example.html.erb => interprets erb first and serves the html file.

example.css.scss.erb => interprets erb first, then scss and serves the css file to the client.

… and so on.

The “image-url()” code that kbedell suggested above works because it’s a scss helper method for rails.

Hope that clears things up a bit :slight_smile:

Cheers!