Как написать помощник в Ruby on Rails для захвата блоков Haml? - PullRequest
8 голосов
/ 15 августа 2010

Я пишу вспомогательный метод Rails, который добавит html-оболочку к захваченным блокам контента и заменит метод content_for, например

- content_for :header do
 //haml code

.. станет

- content :header do
 //haml code
* 1006Для этого я использую блоки 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

Но я не могу заставить это работать.Там нет сообщения об ошибке.Это просто не показывает блок вообще!Я не уверен, что я делаю неправильно.Буду признателен за второе мнение.

Ответы [ 2 ]

10 голосов
/ 15 августа 2010

Вы делаете примерно правильные вещи, но на самом деле вы не вызываете блок #content пройдено.Для этого используйте либо block.call, либо встроенный в Ruby оператор yield.

0 голосов
/ 28 декабря 2010

просто измените это

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

на

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