سؤال

دعنا نستخدم مثالًا حقيقيًا في العالم.

أرغب في القرد WillPaginate :: linkrenderer.to_html طريقة.

حتى الآن حاولت:

  1. تم إنشاء ملف في المجلد: lib/monkeys/will_paginate_nohtml.rb
  2. تمت إضافته في التكوين/البيئات. rb: تتطلب 'القرود/will_paginate_nohtml' في نهاية الملف
  3. داخل هذا الملف ، كان هذا الرمز الخاص بي:

ه

module Monkeys::WillPaginateNohtml
  def to_html
    debugger
    super
  end
end

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

لكن بطريقة ما ، لا يمر تصحيح الأخطاء. يبدو أن الترقيع فشل.

أي مساعدة سيكون موضع تقدير ، شكرا!

هل كانت مفيدة؟

المحلول

وماذا عن هذا واحد :-) حلول من قبل شينغانا ، kandadaboggu لن تعمل لأنه لا يوجد "سوبر" هنا. أنت تريد أن تتصل أصلي الإصدار وليس ممتاز إصدار.

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

نصائح أخرى

عنوان سؤالك مضلل. بصراحة ، أعتقد أنك ربما ترغب فقط في تخصيص بنية قائمة صفحات Will_Paginate ، والتي يمكن القيام بها بشكل مختلف.

لذلك في حالتك ، الطريقة الصحيحة هي تمديد العارض. على سبيل المثال ، قم بتحميل ما يلي من مُهيئ (عبر التكوين/المبدعين):

class CustomPaginationRenderer < WillPaginate::LinkRenderer

  def to_html
    # Your custom code, debugger etc
  end

end

بعد ذلك ، لجعل التطبيق الخاص بك ، استخدم هذا العارض ، أضف ما يلي إلى ملف التكوين/البيئة الخاص بك:

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