Oh!Coder

Coding Life

Will_paginate Gem简介

| Comments

今天介绍一个非常常用的gem,名字叫will_paginate,功能也很单一,主要是实现页面的分页功能。

基本介绍

will_paginage是一个实现分页功能的gem,可以与Ruby on Rails,Sinatra,Merb,DataMapper以及Sequel进行集成。

安装

1
2
## Gemfile for Rails 3+, Sinatra, and Merb
gem 'will_paginate', '~> 3.0.6'

用法

1
2
3
4
5
6
7
8
## perform a paginated query:
@posts = Post.paginate(:page => params[:page])

# or, use an explicit "per page" limit:
Post.paginate(:page => params[:page], :per_page => 30)

## render page links in the view:
<%= will_paginate @posts %>

就酱!只要按照上面的形式进行修改,就大功告成了。剩下的只需要调整CSS样式,让分页的标签样式看着好看些就OK了。

当然了,除了最基本的样式调整以外,还可以设置每页展示的信息条数:

1
2
3
4
5
6
7
# for the Post model
class Post
  self.per_page = 10
end

# set per_page globally
WillPaginate.per_page = 10

在最新的Active Record 3中,可以这样使用:

1
2
3
4
5
# paginate in Active Record now returns a Relation
Post.where(:published => true).paginate(:page => params[:page]).order('id DESC')

# the new, shorter page() method
Post.page(params[:page]).order('created_at DESC')

更多

基本使用就是这些,简单吗?想要了解更多更新使用说明,可参见原文档

Comments