如何在Ruby上的Ruby上磨碎轨道?
-
26-09-2019 - |
题
让我们以一个真实的示例。
我想猴子补丁WillPaginate :: linkRenderer.to_html方法。
到目前为止,我已经尝试过:
- 在文件夹中创建一个文件:lib/monkeys/all_paginate_nohtml.rb
- 在文件末尾添加到config/emoverments.rb中:quirces'norkeys/will_paginate_nohtml'
- 在该文件中,这是我的代码:
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
不隶属于 StackOverflow