2011-03-21 45 views
0

這裏有一個下調版本的我的代碼:從紅寶石塊無輸出時,在方法的返回值

Helper方法:

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」。

我想打印「測試」並返回0.我在這裏做錯了什麼?

編輯:所以我認爲HAML輸出從該方法返回的任何東西。完整的例子是一個遞歸的方法,打印出一堆東西。我如何才能處理HAML而不是僅僅返回它?

回答

1

對於初學者來說,如果你不希望打印0(返回值),則必須將此行更改:​​

= render_tree @sections do |node| 

這一行:

- render_tree @sections do |node| 
+0

啊,錯過了。儘管如此,仍然沒有輸出 – bcoughlan 2011-03-21 04:36:15

1

我不是100%在你要求什麼...

但是,如果你想render_tree方法來處理包含在節點[1]中的HAML字符串,那麼你會想要做一些像

def render_tree(nodes, &block) 
    html = Haml::Engine.new(nodes[1]).render.html_safe 
    block.call(html) 
end 

但是,我不認爲這會做相當你在找什麼。部分我感到困惑,因爲你的建築看起來並不「非常粗魯」。

也許更多的上下文會更清楚?