让我们以一个真实的示例。

我想猴子补丁WillPaginate :: linkRenderer.to_html方法。

到目前为止,我已经尝试过:

  1. 在文件夹中创建一个文件:lib/monkeys/all_paginate_nohtml.rb
  2. 在文件末尾添加到config/emoverments.rb中:quirces'norkeys/will_paginate_nohtml'
  3. 在该文件中,这是我的代码:

e

module Monkeys::WillPaginateNohtml
  def to_html
    debugger
    super
  end
end

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

但是不知何故,调试器没有通过。看起来补丁失败了。

任何帮助将不胜感激,谢谢!

有帮助吗?

解决方案

@shingana的解决方案呢?你想打电话 原来的 版本不是 极好的 版本。

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

其他提示

您的问题的标题具有误导性。坦白说,我认为您可能只想自定义will_paginate页面列表结构,这可以做出不同的方式。

因此,在您的情况下,正确的方法是扩展渲染器。例如,从初始化器加载以下内容(通过config/initializers):

class CustomPaginationRenderer < WillPaginate::LinkRenderer

  def to_html
    # Your custom code, debugger etc
  end

end

然后,要让您的应用程序使用此渲染器将以下内容添加到您的config/Environment.rb文件:

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

我认为您需要打开方法

module WillPaginate
  class LinkRenderer
    def to_html
      debugger
      super
    end
  end
end

尝试这个:

class WillPaginate::LinkRenderer
  def to_html
    debugger
    super
  end
end
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top