Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can you interpolate ruby variables within HAML css?

I need a series of classes, .module1, .module2, ... module(n).

I also want to define those classes using css, ruby and HAML:

:css
  .mod1 {
        background-image: url("#{extra.image}");
    }

Is it possible to interpolate ruby variables to save work?

.module.mod"#{extra.id}"
  %h3 #{extra.title}
  %p #{extra.description}
  %a.btn-default{:href => "#", :target => "_top"} enter now

:css
  .mod#{extra.id} {
        background-image: url("#{extra.image}");
    }
like image 879
JZ. Avatar asked Jul 11 '11 21:07

JZ.


1 Answers

According to the HAML_REFERENCE I used this method:

- flavor = "raspberry"
#content
  :textile
    I *really* prefer _#{h flavor}_ jam.

to interpolate variables after :css

.module.modone{:class => "#{cycle("mod_#{extra.id}_")}"}

  %h3 #{extra.title}
  %p #{extra.description}
  %a.btn-default{:href => "#", :target => "_top"} enter now

:css
  .mod_#{extra.id}_ { 
    background-image: url("#{extra.image}");
    background-color: #4073DF;
  }
like image 127
JZ. Avatar answered Oct 27 '22 00:10

JZ.