8

次のように、キャプチャされたコンテンツ ブロックにラッパー html を追加し、content_for メソッドを置き換える Rails ヘルパー メソッドを作成しています。

- 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 に答える