· 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

And the following HTML if it's false

  important text

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