`
wangsuting
  • 浏览: 29760 次
社区版块
存档分类
最新评论

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

阅读更多
运行环境: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)

这种方式只适用于记录条数较少的情况下使用。
分享到:
评论

相关推荐

    will_paginate分页插件

    本文将深入探讨`will_paginate`的使用方法、核心概念以及其实现原理。 ### 一、安装与配置 在Rails项目中,我们可以通过以下命令安装`will_paginate`: ```bash gem install will_paginate ``` 然后,在`Gemfile...

    will_paginate 2.2.2

    `will_paginate`是Rails框架中非常流行的一个分页插件,版本2.2.2是它的一个历史版本。在本文中,我们将深入探讨`will_paginate`的使用方法、功能特性以及它如何与Rails集成,帮助提升Web应用的性能和用户体验。 一...

    will_paginate-bootstrap, 将 Twitter Bootstrap 分页组件与will_paginate集成.zip

    will_paginate-bootstrap, 将 Twitter Bootstrap 分页组件与will_paginate集成 will_paginate-bootstrap不再维护我不再使用 Bootstrap 来使用 Rails,所以不幸的是,我不再接受请求请求或者维护这个库。 为了发布你...

    will_paginate插件下载

    《will_paginate插件详解与应用》 在Web开发中,数据分页是常见的功能,尤其是在处理大量数据时,为了提高用户体验和加载速度,...通过理解并熟练掌握will_paginate的使用,开发者可以更高效地处理大数据量的Web应用。

    scaffolding+will_paginate+提供will_paginate下载

    5. **视图中显示分页链接**:在视图中,使用`will_paginate`提供的`will_paginate`和`page_links`辅助方法生成分页链接。例如: ```erb <%= will_paginate @posts %> <%= page_links @posts %> ``` 这将生成上...

    will_paginate 2.1.0

    例如,你可以用 `@posts.paginate(page: params[:page], per_page: 10)` 来获取指定页面的记录,并设置每页显示的记录数。 2. **灵活的配置**:`will_paginate` 允许开发者自定义分页参数,如默认每页记录数,以及...

    will_paginate v2.3.11

    《will_paginate v2.3.11:Rails分页插件详解》 在Web开发中,处理大量的数据是常见的需求,特别是在使用Ruby on Rails框架时。为了优化用户体验,提高页面加载速度,分页功能显得尤为重要。这时,will_paginate...

    will_paginate_endless_scroll_example:如何使用 will_paginate gem 创建无限滚动的演示

    使用gem 'will_paginate', '~> 3.0.7'实现无限/无限滚动的工作 Rails CRUD 应用程序示例。 gem 'faker'被用来为项目gem 'faker'虚假数据。 演示 现场演示: : 在本地开发中安装 克隆回购: git clone git@github...

    will_paginate:用于Rails,Sinatra,Merb,DataMapper等的分页库

    will_paginate will_paginate是一个分页库,与Ruby on Rails,Sinatra,Hanami :: View,Merb,DataMapper和Sequel集成。 安装: ## Gemfile for Rails 3+, Sinatra, and Merbgem 'will_paginate' , '~> 3.1.0' 有关...

    will_paginate-bootstrap4:钩入will_paginate以格式化html以匹配Twitter Bootstrap 4样式

    Rails Engine扩展了样式以匹配Twitter的 4工具包中的分页样式约定。 安装 添加到您的Gemfile: gem 'will_paginate-bootstrap4' 用法 <%= will_paginate @clients, renderer: WillPaginate::ActionView::...

    resume 用Ruby技术实现的search 分页的例子

    Rails提供了`will_paginate`或`kaminari`这样的插件来简化分页实现。以`will_paginate`为例,首先添加到Gemfile并安装: ```ruby gem 'will_paginate' gem 'will_paginate-bootstrap' # 如果你想使用Bootstrap样式 ...

    WillPaginateExample:Ruby on Rails的Will_Paginate示例

    它提供了简洁、灵活的API,使得在Rails应用中实现数据库查询结果的分页变得简单易行。在本篇文章中,我们将深入探讨`Will_Paginate`的原理、安装、使用方法以及一些高级特性。 ### 1. 安装 要在Rails项目中使用`...

    rails 2.0.2 分页 需另外下载插件

    为了实现分页,开发者通常需要安装并使用第三方插件,比如"will_paginate"。这个插件允许你在Rails应用中轻松地对数据进行分页显示,提高用户体验并减轻服务器压力。 **1. will_paginate插件介绍** `will_paginate`...

    Ruby-willpaginate一个分页库可与RubyonRailsSinatraMerbDataMapper和Sequel集成

    总的来说,`will_paginate` 是一个强大的工具,无论你在哪个 Ruby 框架下工作,都能简化分页实现,提高代码可读性和可维护性。它通过统一的 API 跨框架支持,降低了学习成本,使得开发者可以在不同的项目之间轻松...

    ruby will_paginate的用法

    新版本的will_paginate已经抛弃了这样的做法,转而使用gem的方式,本文通过建立一个名为foobar的应用来了解一下will_paginate的用法。 ============================== C:\>rails foobar -d mysql C:\>cd foobar C:\...

    ruby on rails 常用插件下载

    在这个特定的场景中,我们关注的是一个名为 "will_paginate" 的插件,它是 Ruby on Rails 中用于实现高效、灵活分页功能的常用工具。 `will_paginate` 插件为 Rails 应用程序提供了一种简单而优雅的方式来处理大量...

    Python利用flask sqlalchemy实现分页效果

    ### 使用Flask-SQLAlchemy实现分页效果 #### 引言 在Web开发中,当数据量较大时,为了提高用户体验以及减轻服务器负担,通常会采用分页技术展示数据。Flask-SQLAlchemy是一个非常流行的扩展,它为Flask框架提供了...

    超强数据库分页,在数据库中进行数据的分页显示

    在本主题中,我们将深入探讨如何实现“超强数据库分页”以及相关的技术细节。 首先,我们需要理解数据库查询的基本概念。当用户请求特定页的数据时,服务器需要执行SQL查询来获取对应的数据范围。这个过程通常涉及...

Global site tag (gtag.js) - Google Analytics