覆盖Rails mislav-will_paginate插件

时间:2009-08-20 02:35:26

标签: ruby-on-rails pagination override will-paginate

我正在使用Rails mislav-will_paginate插件来分页我的记录。我想生成以下输出,无论是否有多个页面:

X - Y of Z
1 - 100 of 1826

WillPaginate中的will_paginate ::如果只有一页记录,ViewHelpers将返回nil。如果只有一个页面,我想以最干净的方式覆盖这个以产生上面的输出,或者如果有多个页面,则通常输出包围上面的输出。

我已经覆盖了WillPaginate :: LinkRenderer的to_html方法来生成此输出,但如果只有一页记录,我无法弄清楚如何生成它。

我是否应该移动代码以在其他地方生成Z的X-Y并从我的重写to_html方法调用它,并且如果它返回nil,则从我进行will_paginate调用的地方调用它?如果是的话,它应该在哪里居住?

1 个答案:

答案 0 :(得分:1)

好的,这就是我的所作所为:

  • 创建了一个模块Paginator
  • 在我的模型助手中包含了Paginator模块
  • 在我的观点中称为Paginator.paginate
  • 定义Paginator.paginate,如果只有一个页面,则调用Paginator.produce_totals,或者为多个页面调用will_paginate(常规方法)
  • 定义Paginator.produce_totals以输出“X-Y of Z”总数如上所述
  • 在我的WillPaginate :: LinkRenderer覆盖类中包含Paginator模块
  • 在我的重写to_html方法的适当位置调用Paginator.produce_totals

唷!如果它对任何人都有用,可以发布代码 - 只需询问。