Haml嵌套块

时间:2015-03-05 14:29:29

标签: html ruby-on-rails haml

我是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

有任何建议吗?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

根据#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"