Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

HAML: Indenting if/else statements with common content

I have the following in my view:

- if (condition)
  %div.truecondition
    (Ten lines of content)
- else
  %div.falsecondition
    (Ten lines of the same content)

I'd like to factor out the ten lines of content to go below the if/else statement...but if I do that, indentation means the content won't be nested inside the div specified in the if/else. I'm sure this is a common problem, I'm just wondering what the solution is. So...how do I factor out that ten lines while keeping the content nested in the .truecondition/.falsecondition div?

like image 260
PlankTon Avatar asked May 27 '11 03:05

PlankTon


2 Answers

you can try Ternary operator:

%div{ :class => condition ? 'truecondition' : 'falsecondition' }
  (Ten lines of content)
like image 138
JCorcuera Avatar answered Nov 15 '22 10:11

JCorcuera


JCorcuera's answer is better, but this is dirtier:

%div(class="#{!!condition}condition")
  (Ten lines of content)

Assuming you literally have css classes named truecondition and falsecondition, which as I type this seems unlikely.

like image 28
gunn Avatar answered Nov 15 '22 12:11

gunn