· ruby haml

Ruby/Haml: Conditionally/Optionally setting an attribute/class

One of the things that we want to do reasonably frequently is set an attribute (most often a class) on a HTML element depending on the value of a variable.

I always forget how to do this in Haml so I thought I better write it down so I'll remember next time!

Let's say we want to add a success class to a paragraph if the variable correct is true and not have any value if it's false.

The following code does what we want:


- correct = true
%p{:class => (correct ? "success" : nil) }
  important text

This generates the following HTML is correct is true:


<p class="success">
  important text
</p>

And the following HTML if it's false


<p>
  important text
</p>

To summarise, if we set an attribute to nil in Haml it just won't be rendered at all which is exactly what we want in this situation.

  • LinkedIn
  • Tumblr
  • Reddit
  • Google+
  • Pinterest
  • Pocket