Ruby On Rails框架下的翻页/排序插件
2012-02-27 13:34
323 查看
1. kaminari
官方主页:https://github.com/amatsuda/kaminari
首先在Gemfile文件中加入:gem 'kaminari'
然后通过bundle install命令激活该插件。
演示代码:
home_controller.rb
注意:
我们可以在通过model中添加paginates_per来设定每页显示的行数,这样在controller里就不需要每次都设定了。
例如:
如果想要使用Ajax,可以参考这里:https://github.com/amatsuda/kaminari_example/tree/ajax
这里简单叙述一下修改步骤:
1. index.html.erb,home_helper.rb等文件中出现:remote => false的全部修改为:remote => true
2. 需要添加几个文件:
index.js.erb
index.html.erb
2. will_paginate
官方主页:https://github.com/mislav/will_paginate/wiki
will_paginate和kaminari非常的相似,这里就简单讲述一下了。
页面 index.html.erb上只需把 <%= paginate @users, :remote => true %> 替换为 <%= will_paginate @users %> 即可。
controller里也只需把
其他都可以不更改。
另外,和kaminari一样,我们也可以在model里面定义页面显示的行数:
更多信息可参阅其官方主页。
另外,will_paginate自带很多css可以使用:http://mislav.uniqpath.com/will_paginate/
更多资料:http://railscasts.com/episodes/240-search-sort-paginate-with-ajax?autoplay=true
官方主页:https://github.com/amatsuda/kaminari
首先在Gemfile文件中加入:gem 'kaminari'
然后通过bundle install命令激活该插件。
演示代码:
home_controller.rb
class HomeController < ApplicationController def index @users = User.order(sort).page(params[:page]).per(20) respond_to do |format| format.html format.js format.xml { render :xml => @users } end end private def sort params[:sort].to_s == '' ? "" : params[:sort] + ' ' + params[:direction] end endhome_helper.rb
module HomeHelper def sortable(title = nil, column) title ||= column.titleize direction = column == sort_column && sort_direction == "asc" ? "desc" : "asc" link_to title, params.merge(:sort => column, :direction => direction), :remote => false, :method => :get end private def sort_column User.column_names.include?(params[:sort]) ? params[:sort] : "created" end def sort_direction %w[asc desc].include?(params[:direction]) ? params[:direction] : "desc" end endindex.html.erb
<table> <tr> <th><%= sortable 'Email', 'email' %></th> <th><%= sortable 'Password', 'password' %></th> <th><%= sortable 'Publisher ID', 'publisher_id' %></th> </tr> <% @users.each do |user| %> <tr> <td><%= user.email %></td> <td><%= user.password %></td> <td><%= user.publisher_id %></td> </tr> <% end %> </table> <%= paginate @users, :remote => false %>新建model如下:user.rb
class User < ActiveRecord::Base end测试用的数据库中,users表有id, emai, password, publisher_id, created等字段,可自行修改。
注意:
我们可以在通过model中添加paginates_per来设定每页显示的行数,这样在controller里就不需要每次都设定了。
例如:
class User < ActiveRecord::Base paginates_per 10 end在controller里直接:@users = User.order(sort).page(params[:page]) 即可。
如果想要使用Ajax,可以参考这里:https://github.com/amatsuda/kaminari_example/tree/ajax
这里简单叙述一下修改步骤:
1. index.html.erb,home_helper.rb等文件中出现:remote => false的全部修改为:remote => true
2. 需要添加几个文件:
index.js.erb
$('#users').html('<%= escape_javascript render(@users) %>'); $('#paginator').html('<%= escape_javascript(paginate(@users, :remote => true).to_s) %>');在views目录下新建users文件夹,增加_user.html.erb文件:
<tr> <td><%= user.email %></td> <td><%= user.password %></td> <td><%= user.publisher_id %></td> </tr>3. 修改文件:
index.html.erb
<table> <thead> <tr> <th><%= sortable 'Email', 'email' %></th> <th><%= sortable 'Password', 'password' %></th> <th><%= sortable 'Publisher ID', 'publisher_id' %></th> </tr> </thead> <tbody id="users"> <%= render @users %> <tbody> </table> <%= paginate @users, :remote => true %>这样翻页的功能就完成了。但是排序还有点问题,因为目前还无法记住上一次排序是按照升序还是降序[可使用session来记录],修改修改home_helper.rb,这里略过。
2. will_paginate
官方主页:https://github.com/mislav/will_paginate/wiki
will_paginate和kaminari非常的相似,这里就简单讲述一下了。
页面 index.html.erb上只需把 <%= paginate @users, :remote => true %> 替换为 <%= will_paginate @users %> 即可。
controller里也只需把
@users = User.order(sort).page(params[:page]).per(10)替换为:
@users = User.paginate(:page => params[:page], :per_page => 10).order(sort)
其他都可以不更改。
另外,和kaminari一样,我们也可以在model里面定义页面显示的行数:
self.per_page = 10
更多信息可参阅其官方主页。
另外,will_paginate自带很多css可以使用:http://mislav.uniqpath.com/will_paginate/
更多资料:http://railscasts.com/episodes/240-search-sort-paginate-with-ajax?autoplay=true
相关文章推荐
- Ruby On Rails 框架下的常用插件介绍 --- haml
- 受Ruby on Rails影响的PHP开发框架
- 受Ruby on Rails影响的PHP开发框架
- 受Ruby on Rails影响的PHP开发框架
- 一起谈.NET技术,重构TekPub——从ASP.NET MVC框架迁移到Ruby on Rails
- ruby on rails学习第4篇:rails框架下的文件夹及其作用 (转载)
- 【Ruby】Ruby框架的使用(Ruby on Rails项目结构分析)
- centos6.5源码安装rubyonrails及其gem插件
- Ruby on Rails 和 J2EE:两者能否共存?两个 Web 应用程序框架的比较
- ruby on rails 安装fullcalendar插件
- Ruby与Ruby on Rails框架环境搭建的简明教程
- 在Ruby on Rails/Naked Objects精神指引下的域驱动开发框架
- RUBY ON RAILS 插件收录: CACHE:Sweeper Generator
- Ruby on Rails框架程序连接MongoDB的教程
- Ruby on Rails框架开发学习
- [导入]受Ruby on Rails影响的PHP开发框架
- Ruby On Rails 学习:Rails3中实现数据分页和排序
- ubuntud下的vim插件(Ruby on rails)
- 以MVC的思维方式来理解Ruby on Rails框架的设计结构
- Ruby on rails基本框架搭建