在haml中创建一个更改子元素或父元素的宏

时间:2015-05-25 17:41:12

标签: macros haml

我经常使用以下haml模式:

%p.wording{:'data-wording-key' => 'some.key'}
  = Wording.fetch('some.key')

我想知道我是否可以创建一个帮助器或宏来将其写为

%p{wording: 'some.key'}

让它生成与第一个版本相同的HTML。

这可以用haml吗?

另一种可接受的方法是

%p
  = WordingMacro('some.key')

WordingMacro在父p标记上添加class和data-attribute。但这可行吗?

另一个好方法是声明我自己的元素,例如

%p_with_wording('some.key')

并生成相同的HTML。但是你可以用haml创建自己的元素,将params传递给它们,然后改变它们的子元素吗?

1 个答案:

答案 0 :(得分:0)

据我所知,haml中没有宏,但您可以使用haml以任何语言轻松创建辅助方法。

可能更适合这种情况的另一个选择是使用部分。在公共部分中添加常用代码:

%p.wording{:'data-wording-key': key}
  = Wording.fetch(key)

然后在主haml文件中调用它:

= partial( :wording_partial, { key: 'one-key' } )

如果你正在使用sinatra。在rails中它会是这样的:

= render_partial :wording_partial, locals: { key: 'one-key' }

部分渲染是使用haml使用的语言完成的 - 它不是haml本身的一部分。