2010-08-14 38 views
8

我写一个Rails的helper方法,将包装HTML代码添加到拍摄的内容块,更换content_for方法,如如何在Ruby on Rails中编写帮助程序来捕获Haml块?

- content_for :header do 
//haml code 

..would成为

- content :header do 
//haml code 

为了做到这一点,我使用Haml和Ruby块。这是它看起来像

def content(name,&block) 
content_for name do 
    capture_haml do 
    haml_tag "div",{:id=>name.to_s} do 
     haml_tag "div",{:id=>"#{name.to_s}_group"} do 
     block 
     end 
    end  
    end  
end 
end 

但我不能得到这个工作。没有错误消息。它根本不显示块!我不知道我做错了什么。我希望得到第二个意见。

回答

10

你正在做的事情大致是正确的,但实际上并没有调用#content这个块。为此,请使用block.call或Ruby的内置yield语句。

0

只是改变这个

haml_tag "div",{:id=>"#{name.to_s}_group"} do 
    yield 
end 

haml_tag "div",{:id=>"#{name.to_s}_group"},&block 
+0

这两个实际上是行为完全等同。 ('&block'版本可能稍微有点高性能,但是现在它们大致相同。)然而,@ nex3指出,OP并没有调用yield,而只是简单地返回'block'称它。 – Peeja 2014-03-19 15:13:16

相关问题