Pregunta

Usemos un ejemplo del mundo real.

Quiero monkey Patch Willpaginate :: Linkrenderer.to_html Método.

Hasta ahora he intentado:

  1. Creó un archivo en la carpeta: lib/monkeys/will_paginate_nohtml.rb
  2. Agregado en config/entornos.rb: requiere 'monkeys/will_paginate_nohtml' al final del archivo
  3. Dentro de ese archivo, este era mi código:

mi

module Monkeys::WillPaginateNohtml
  def to_html
    debugger
    super
  end
end

WillPaginate::LinkRenderer.send(:include, Monkeys::WillPaginateNohtml)

Pero de alguna manera, el depurador no se pasa. Parece que el parche falló.

¡Cualquier ayuda será apreciada, gracias!

¿Fue útil?

Solución

¿Y qué pasa con este :-) Soluciones de @shingana, @kandadaboggu no funcionará ya que no hay "super" aquí. Quieres llamar original versión no la súper versión.

module WillPaginate
  class LinkRenderer
    alias_method :to_html_original, :to_html
    def to_html
      debugger
      to_html_original
    end
  end
end

Otros consejos

El título de su pregunta es engañoso. Francamente, creo que probablemente solo desee personalizar la estructura de la lista de páginas Will_Paginate, que se puede hacer de manera diferente.

Entonces, en su caso, la forma correcta es extender el renderizador. Por ejemplo, cargue lo siguiente de un inicializador (a través de config/inicializadores):

class CustomPaginationRenderer < WillPaginate::LinkRenderer

  def to_html
    # Your custom code, debugger etc
  end

end

Luego, para que su aplicación use este renderizador, agregue lo siguiente a su archivo config/entorno.rb:

WillPaginate::ViewHelpers.pagination_options[:renderer] = 'CustomPaginationRenderer'

Creo que necesitas abrir el método

module WillPaginate
  class LinkRenderer
    def to_html
      debugger
      super
    end
  end
end

Prueba esto:

class WillPaginate::LinkRenderer
  def to_html
    debugger
    super
  end
end
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top