Я пытаюсь сделать следующее:
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
Либо дать строку (или символ) методу heading
, либо блок.
В представлении:
<% mh = getmh %>
<%= mh.heading :bla %> // WORKS
<%= mh.heading do %> // FAILS
test 123
<% end %>
(обратите внимание, что getmh
как раз для этого примера, PModuleHelper
возвращается другим процессом в моем приложении, поэтому нет необходимости комментировать это или предлагать сделать heading
нормальнымвспомогательный метод, а не метод класса)
К сожалению, я всегда получаю следующую ошибку:
wrong number of arguments (0 for 1)
с номером белья для вызова capture(&block)
.
Как использоватьcapture
внутри собственного класса помощника?