Rails 3- Will_Paginate - 使分页链接更像GMAIL

时间:2010-10-09 16:44:58

标签: ruby-on-rails ruby-on-rails-3 will-paginate

我正在使用Rails 3插件Will_Paginate并使用以下教程来学习如何自定义分页链接:

http://thewebfellas.com/blog/2010/8/22/revisited-roll-your-own-pagination-links-with-will_paginate-and-rails-3/

我的问题是,如何使分页链接更像GMAIL,例如:

1 - 100 of 25409 Old> Oldest»

Oldest»

«最新<25401 - 25409,25409

由于

2 个答案:

答案 0 :(得分:3)

看起来该链接(几乎)所有您需要的信息。

“较旧”基本上是“下一页”,因此您可以覆盖渲染器中的next_page方法。 “最古老的”是“最后一页”;你需要添加一个方法,然后确保它包含在你的pagination方法返回的数组中(will_paginate中内置的total_pages方法将在这里提供帮助。)

然后对Newer / Newest进行反向。

查看link_renderer.rblink_renderer_base.rb个文件。他们有你将要覆盖的方法。

我写了一个自定义的will_paginate 3渲染器来模仿GitHub / Twitter风格的“更多”分页。我已经注释了下面的代码。它不会让你到达你需要去的地方,但它是一个开始。

module TwitterPagination
  class LinkRenderer < WillPaginate::ViewHelpers::LinkRenderer
    protected

    # Tells WP how to render the "Next Page" link
    def next_page
      # The only difference from the default here is we renamed the link to "More" 
      # and added a custom class, twitter_pagination
      previous_or_next_page(@collection.next_page, "More", 'twitter_pagination') if @collection.next_page
    end

    # Remove all links except our :next_page
    def pagination
      [ :next_page ]
    end
  end
end

通过阅读我上面链接的两个源文件,可以弄清楚为了做到这一点我需要知道的一切。

我真的很惊讶这是多么容易做到; will_paginate的最新设计在这个领域非常出色。

答案 1 :(得分:0)

尝试类似

的内容
<%= will_paginate @items, :class => 'apple_pagination' %>

类也可以是digg_pagination,.flickr_pagination。

在此之前,您需要download并将pagination.css复制到您的公开/样式表。