ruby on rails 3 - ¿Cómo capturar un bloque en la clase hijo de un ayudante?
ruby-on-rails-3 ruby-on-rails-3.1 (1)
Haría algo como esto:
module Applicationhelper
class PModuleHelper
attr_accessor :parent
def initialize(parent)
self.parent = parent
end
delegate :capture, :content_tag, :to => :parent
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(self)
end
end
No puedo garantizar que esto funcione, porque tuve este error: el undefined method ''output_buffer=''
lugar del que está mencionando. No he podido reproducir el tuyo.
Estoy tratando de hacer lo siguiente:
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
O bien, asigne una cadena (o símbolo) al heading
del método o un bloque.
En vista:
<% mh = getmh %>
<%= mh.heading :bla %> // WORKS
<%= mh.heading do %> // FAILS
test 123
<% end %>
(tenga en cuenta que getmh
es solo para este ejemplo, el PModuleHelper
es devuelto por algún otro proceso en mi aplicación, por lo que no es necesario comentar sobre esto ni sugerir que el heading
un método de ayuda normal, no un método de clase)
Lamentablemente siempre me sale el siguiente error:
wrong number of arguments (0 for 1)
con lino para la capture(&block)
llamada.
¿Cómo usar la capture
dentro de la propia clase de ayuda?