conditional haml - if else nesting

2019-03-12 21:06发布

问题:

What I want is both whats in "if" and whats in "else" to include #main-block.

- if @transparency
  #content-inner{:style => "background: url(../../../images/illustrations/" + @transparency + ") no-repeat 88% 50%"}
- else 
  #content-inner
     #main-block

What happens currently is, if @transparency is defined, #main-block is not nested inside #content-inner.

回答1:

You can use a ternary operator to conditionally apply the style attribute:

#content-inner{ :style => @transparency ? "background: url(../../../images/illustrations/" + @transparency + ") no-repeat 88% 50%" : '' }
  #main-block

For a more complicated arrangement, for example manipulating multiple hash attributes, it's best to either use a helper method, or to move the common content to a partial.



标签: ruby haml