我经常使用以下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传递给它们,然后改变它们的子元素吗?
答案 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本身的一部分。