用will_paginate读取数据库内容并实现分页显示

本文介绍在Ruby on Rails应用中使用will_paginate插件实现分页的方法。包括安装配置步骤、控制器及视图中的使用方式,并提供了针对不同场景的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

运行环境:ruby2.0 rails4.0.0

设置分页有两种方法,1.在Model中添加self.per_page = 9;2.直接在paginate后面添加:per_page => 10参数,以下是第二种方法:

1.安装will_paginate
(1)在genfile文件中添加
gem 'will_paginate'
gem 'bootstrap-will_paginate'
然后执行
 $ bundle install

2.改controller
def manage_index
@user = User.paginate(page: params[:page]))
end

User.paginate默认分页是30条数据一页,可以加限制,比如说想每页显示10条数据,就可以
def manage_index
@user = User.paginate(page: params[:page],per_page:10))
end

执行时生成的SQL语句如下:
SELECT "users".* FROM "users" LIMIT 10 OFFSET 0
3.改对应的视图文件

%tbody
-@user.each do |t|
%tr
%td(align="center" style="width:37%" valign="middle")
=t.id-1
%td(align="center" style="width:37%" valign="middle")
=t.name
%td(align="center" style="width:45%" valign="middle")
=link_to '删除' ,:action => "login"
=link_to '修改密码',:action => "login"
.right-padding
= will_paginate @user

这样就可以实现分页显示了
will_paginate 方法有点小神奇,在 Users 控制器的视图中,它会自动寻找名为 @users 的对象,然后显示一个分页导航链接。因为我的控制器是User,所以上面代码的@user可以省略。

还可以对要显示的数据库内容进行筛选:比如要要显示除管理员之外的所有用户信息可以这样添加限制
@user = User.paginate(page: params[:page], per_page: 9).where(:admin => 'false')

执行时会生成SQL语句如下:
SELECT "users".* FROM "users" WHERE "users"."admin" = 'false' LIMIT 9 OFFSET 0
这样就把管理员滤掉了

补充:
有时候需要对某些数据进行分页显示,而这些数据不是从数据库直接读取出来的,比如说显示从另一个服务器传过来的数据,这样就不能直接用.paginate
假如@activities是一个对象数组,可以这样做,首先要在需要分页的controller的代码上方引入
require 'will_paginate/array'

然后把@activities存到session里
session[:aa] = @activities

在从session里面读取分页
@aa = session[:aa].paginate(page: params[:page], per_page: 10)

这种方式只适用于记录条数较少的情况下使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值