环境:ruby 1.8.7 rails 2.3.5 gem 1.3.5 mysql5
废话不多,速度演示
1.创建一个演示demo
rails pagination -d mysql
修改config/databse.yml数据库配置
2.创建数据库
cd pagination
rake db:create #创建数据库
3.创建一个USER对象
ruby script/generate scaffold user name:string age:integer #创建脚手架代码,基本CRUD
4.安装will_paginate插件
gem install will_paginate #安装插件,傻瓜方法
5.加载will_pageinate
打开config/environment.rb,添加
Rails::Initializer.run do |config|
...
end
require "will_paginate" #加载will_paginate
6.修改每页显示数
例:
class User < ActiveRecord::Base
cattr_reader :per_page #设置每页记录数,此处每页3条
@@per_page = 3
end
7.修改controller
修改index方法,加入
@users = User.paginate( :page => params[:page], :order => 'name') #通过page参数进行分页,并按name自带排序
默认代码:
@users = User.find(:all) #默认代码可能是这样的,查找所有,并未分页
8.修改模板文件index.html.erb
加入翻页代码
<%= will_paginate @users ,:prev_label => '上一页', :next_label => '下一页'%>
具体可以自己设定 pre_label 名称
9.启动服务器
ruby script/server
10.访问http://127.0.0.1:3000/users
可能碰到的问题
1.说什么paginate方法未定义,检查上面第5步,估计是will_paginate没加载,忘了,或者插件没安装
2.在模板中说什么each方法未定义啥的,重启下服务器,就是重复第9步
3.其他情况,有时重复下第9步蛮有效的
参考资料
1.http://blog.csdn.net/kunshan_shenbin/archive/2009/05/14/4182610.aspx
基本安装他的说法照做就能实现
2.http://github.com/mislav/will_paginate
插件下载地址,并附简单说明
3.http://wiki.github.com/mislav/will_paginate/installation
2中的安装说明