как захватить блок в дочернем классе помощника ?

Я пытаюсь сделать следующее:

module ApplicationHelper

   class PModuleHelper
     include ActionView::Helpers::TagHelper
     def heading(head = "", &block)
       content = block_given? ? capture(&block) : head.to_s
       content_tag :h3, content, :class => :module_header
     end
   end

    def getmh
        PModuleHelper.new
    end

end

Либо передать строку (или символ) методу , заголовок , либо блок.

In View:

<% mh = getmh %>
<%= mh.heading :bla %> // WORKS
<%= mh.heading do %>   // FAILS
    test 123
<% end %>

(обратите внимание, что getmh предназначен только для этого примера, PModuleHelper возвращается другим процессом в моем приложении, поэтому не нужно комментировать это или предлагать сделать заголовок обычный вспомогательный метод, а не метод класса)

К сожалению, я всегда получаю следующую ошибку:

wrong number of arguments (0 for 1)

с номером строки для вызова захвата (& блока) .

Как использовать захватить внутри собственного вспомогательного класса?

16
задан Markus 28 August 2011 в 17:57
поделиться