ruby-on-rails-3 ruby-on-rails-3.1 capture view-helpers

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?