这是我的代码的精简版本:
帮助方法:
def render_tree nodes, &block
block.call nodes[1]
return 0
end
和我的HAML文件:
= render_tree @sections do |node|
- logger.debug("BLOCK CALLED");
= node.title
代码应该打印node.title,方法返回0.而不是只打印“0”(返回值)。
如果我注释return 0
,则会打印node.title。
在这两种情况下,调试器都会打印“BLOCK CALLED”。
我想打印“test”并返回0.我在这里做错了什么?
编辑:所以我认为HAML正在输出从该方法返回的任何内容。完整的示例是一个递归方法,打印出一堆东西。我怎样才能让它处理HAML而不是只返回它?
答案 0 :(得分:1)
对于初学者,如果您不想打印0(返回值),则必须更改此行:
= render_tree @sections do |node|
到这一行:
- render_tree @sections do |node|
答案 1 :(得分:1)
我不是100%根据你的要求......
但是,如果您希望render_tree方法处理节点[1]中包含的HAML字符串,那么您可能希望执行类似
的操作def render_tree(nodes, &block)
html = Haml::Engine.new(nodes[1]).render.html_safe
block.call(html)
end
但是,我不认为这会完全你正在寻找什么。在某种程度上,我感到很困惑,因为你的构造看起来并不像“轨迹”。
或许有更多的背景会更清楚?