Ruby on rails 是否可以让Rails中的视图助手生成Haml缩进HTML?
假设我有一个具有视图帮助器方法的things资源,例如:Ruby on rails 是否可以让Rails中的视图助手生成Haml缩进HTML?,ruby-on-rails,haml,Ruby On Rails,Haml,假设我有一个具有视图帮助器方法的things资源,例如: module ThingsHelper def foo ret = "" 3.times { ret += content_tag(:li, "foo") } content_tag(:ul, ret) end end 然后,在模板中使用: %p = foo 生成的HTML源代码如下所示: <!DOCTYPE html> <html> <head>
module ThingsHelper
def foo
ret = ""
3.times { ret += content_tag(:li, "foo") }
content_tag(:ul, ret)
end
end
然后,在模板中使用:
%p
= foo
生成的HTML源代码如下所示:
<!DOCTYPE html>
<html>
<head>
<title>Foo</title>
</head>
</html>
<body>
<p>
<ul><li>foo</li><li>foo</li><li>foo</li></ul>
</p>
</body>
福
- foo
- foo
- foo
正如您所看到的,助手输出没有像代码的其余部分那样缩进。有什么办法可以解决这个问题吗?我对此表示怀疑——至少在没有大量垃圾的情况下是这样 你的
=foo
只是简单地打印你的foo
助手返回的内容-它不会被haml解析。您也不能在helper方法中编写haml
我能想到的最简单的处理方法就是在助手中添加文本空白字符(即\n
和\t
)
您也可以在助手中要求相关的haml类,并在ret
上手动调用解析方法,但这可能会非常复杂。尝试haml提供的方法。它在某些方面类似于content\u tag
,但它输出正确缩进的HTML。主要区别在于它直接输出到模板,而不是返回字符串。例如:
module ThingsHelper
def foo
haml_tag :ul do
3.times { haml_tag(:li, "foo") }
end
end
end
(顺便说一句,使用两个空格以外的空格进行缩进被认为是非常糟糕的Ruby风格)。效果很好。在以下位置用树结构集合的格式化程序记录了一个简单的示例: