كيف تقود رقعة في روبي على القضبان؟
-
26-09-2019 - |
سؤال
دعنا نستخدم مثالًا حقيقيًا في العالم.
أرغب في القرد WillPaginate :: linkrenderer.to_html طريقة.
حتى الآن حاولت:
- تم إنشاء ملف في المجلد: lib/monkeys/will_paginate_nohtml.rb
- تمت إضافته في التكوين/البيئات. rb: تتطلب 'القرود/will_paginate_nohtml' في نهاية الملف
- داخل هذا الملف ، كان هذا الرمز الخاص بي:
ه
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