如何避免haml模板中的标记重复?

时间:2014-03-20 17:02:47

标签: ruby haml code-duplication

我看到了a similar question,但我相信这里存在一定的差异,就是这段代码无法修复。我们考虑以下代码:

- if image['href']
    %a{href: image['href']}
        <some markup>
- else
    <some markup>

如果不将代码移动到其他文件,我可以做些什么来避免重复?

UPD 我的问题似乎与this one重复。

1 个答案:

答案 0 :(得分:2)

Haml 4.1(当前位于beta - 它might be version 5发布时)包含一个haml_tag_if方法,可以执行您想要的操作:

- haml_tag_if image['href'], :a, href: image['href'] do
  some markup

这将产生:

<a href='foo'>
  some markup
</a>

或只是

some markup

取决于image['href']是否真实。

如果您还不想升级,可以自己添加方法作为帮助,请查看类似问题的答案:https://stackoverflow.com/a/8595810/214790(代码与Haml中的新代码基本相同本身)。