6

実際の例を使用してみましょう。

WillPaginate::LinkRenderer.to_html メソッドにモンキー パッチを適用したい。

これまでのところ、私は試しました:

  1. フォルダにファイルを作成しました: lib/monkeys/will_paginate_nohtml.rb
  2. config/environments.rb に追加: ファイルの最後に「monkeys/will_paginate_nohtml」が必要
  3. そのファイルの中には、これが私のコードでした:

e

module Monkeys::WillPaginateNohtml
  def to_html
    debugger
    super
  end
end

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

しかし、どういうわけか、デバッガーは通過しません。パッチ適用に失敗したようです。

どんな助けでも大歓迎です、ありがとう!

4

4 に答える 4

10

そして、これはどうですか:-) @shingana、@kandadabogguによるソリューションは、ここには「スーパー」がないため機能しません。スーパーバージョンではなくオリジナルバージョンと呼びたい。

module WillPaginate
  class LinkRenderer
    alias_method :to_html_original, :to_html
    def to_html
      debugger
      to_html_original
    end
  end
end
于 2010-09-30T18:37:11.510 に答える
5

あなたの質問のタイトルは誤解を招くものです。率直に言って、おそらく 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'
于 2010-09-30T19:01:48.493 に答える
0

メソッドを開く必要があると思います

module WillPaginate
  class LinkRenderer
    def to_html
      debugger
      super
    end
  end
end
于 2010-09-30T18:01:56.227 に答える
0

これを試して:

class WillPaginate::LinkRenderer
  def to_html
    debugger
    super
  end
end
于 2010-09-30T18:16:49.833 に答える