Haml 嵌套块

Haml nested blocks

我是 HAML 的新手。那么 HAML 中的这个呢?

    -if @link.is_active
      %a
    -else
       #custom-div
         .custom-class

所以我想看看某些条件是否成立

    <a><div id = "custom-div"><div class = "custom-class"></div></div></a>

如果它是假的:

    <div id = "custom-div"><div class = "custom-class"></div></div>

没有复制块,我的意思不是这个:

   -if @link.is_active
     %a
       #custom-div
         .custom-class
    -else
       #custom-div
         .custom-class

有人提议吗?

Haml 4.1.0.beta.1 有一个 haml_tag_if helper。你可以这样使用它:

- haml_tag_if @link.is_active, :a do
  #custom-div
     .custom-class

如果你不会用4.1.0可以自己添加这个助手,很简单。这应该有效:

def haml_tag_if(condition, *tag)
  if condition
    haml_tag(*tag){ yield }
  else
    yield
  end
end

根据 #custom-div .#custom-class 的复杂程度,您可以使用 link_to_if:

http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to_if

= link_to_if @link.is_active, "html safe linkable text here", "url to link to"