重构代码时,将HAML模板的一部分复制并粘贴到帮助器代码中会非常方便。但目前这样做有两个问题:1)我必须从零开始重新编写视图的那部分内容;2)我必须使用冗长的语法如content_tag或haml_tag。
我知道可以使用HAML语法定义partials作为helper。但是,对我来说,创建一个单独的文件来处理每个小函数是不方便的,而且partial的调用语法也相当冗长。
理想情况下,我希望我的*_helper类看起来像这样:
- def some_helper(*its_args)
.some_class
= some_ruby_expression
%some_tag#some_id
- another_expression do
etc
或者至少像这样:
define_haml_helper :some_helper, [:arg1, :arg2], %{
.some_class
= some_ruby_expression
%some_tag#some_id
- another_expression do
etc
}
有没有插件可以解决我的问题?
或者,您可以描述一下如何将HAML片段重构为可重复使用的元素(helpers/functions/partials/builders等)?
hamlize
的帮助方法,它只包含Haml::Engine.new(yield).render if block_given?
。这似乎就是你想要的:hamlize{“%div.some-class”+some_method_that_returns_valid_haml(arg1,arg2)}
。不过我也很感兴趣 @Simon 的评论答案——不确定我是否应该缓存引擎?还在努力将其他辅助方法放入引擎上下文中…… - Jazz