2009-08-20 4 views
1

Я работаю с плагином Rails mislav-will_paginate для разбивки моих записей. Я хочу, чтобы произвести следующий вывод, независимо от того, были ли несколько страниц:Overriding Rails плагин mislav-will_paginate

X - Y of Z 
1 - 100 of 1826 

will_paginate в WillPaginate :: ViewHelpers возвращает NIL, если только одна страница записей. Я хочу переопределить это самым чистым способом для создания вышеприведенного вывода, если была только одна страница, или вышеупомянутый выход, окруженный обычным выходом, если было несколько страниц.

Я переопределил метод WillPaginate :: LinkRenderer to_html для создания этого вывода, но я не могу понять, как его создать, если есть только одна страница записей.

Должен ли я перемещать код для создания X-Y из Z в другом месте и вызывать его как из моего метода overridding to_html, так и из того места, где я делаю свой вызов will_paginate, если он возвращает nil? Если да, то где он должен жить?

+0

Я предполагаю, что эти числа представляют количество элементов, показанных на текущей странице, и сколько их общего? И вы хотите всегда показывать это, существуют ли ссылки для разбивки на страницы? В таком случае, почему бы не сохранить его вне вызова will_paginate полностью и реализовать его в своем представлении или в обычном вспомогательном методе? – ryanb

+0

Оба предположения верны. Я стараюсь объединить их, потому что они логически связаны; каждый раз, когда я вызываю will_paginate, я хочу также отображать итоговые значения. Я также хочу отображать итоговые значения между ссылками на страницы, которые будут выдаваться will_paginate, ala Gmail. Самый чистый способ сделать это - получить get_paginate для вывода итогов в методе to_html. – nfm

ответ

1

Хорошо, вот что я сделал:

  • Создан модуль Paginator
  • Включенный модуль Paginator в помощнике моей модели
  • Вызывается Paginator.paginate в моих взглядах
  • Defined Paginator.paginate к вызовите Paginator.produce_totals, если была только одна страница, или вызвать will_paginate (обычный метод) для нескольких страниц
  • Определено Paginator.produce_totals для вывода итоговых значений «X-Y of Z» в виде выше
  • Включен модуль Paginator в моем WillPaginate :: LinkRenderer класс первостепенной
  • Названного Paginator.produce_totals на соответствующем пункте в моем переопределении to_html метода

Уф! Может отправлять код, если он кому-то полезен - просто спросите.

+0

Почему бы не сделать это плагином, который расширяет will_paginate или fork/branch will_paginate, чтобы включить эту поддержку и отправить запрос на pull? –