8

我正在编写一个 Rails 辅助方法,它将包装器 html 添加到捕获的内容块并替换 content_for 方法,例如

- content_for :header do
 //haml code

..会成为

- 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

但我无法让它工作。没有错误信息。它根本不显示块!我不确定我做错了什么。我很感激第二个意见。

4

2 回答 2

10

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

于 2010-08-15T01:17:37.453 回答
0

改变这个

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

haml_tag "div",{:id=>"#{name.to_s}_group"},&block
于 2010-12-28T01:31:58.820 回答