Ruby on Rails will_pagination 一个数组

作者:编程家 分类: ruby 时间:2025-07-02

# 使用 Ruby on Rails 的 will_paginate 实现数组分页

在 Ruby on Rails 中,我们经常需要对数据库中的数据进行分页显示,以提供更好的用户体验和更高的性能。然而,有时候我们需要对一个数组进行分页,而不是数据库中的数据。这时,可以使用 `will_paginate` gem 来实现数组分页功能。

## 什么是 will_paginate?

`will_paginate` 是一个 Ruby on Rails 中非常流行的分页 gem,它允许你轻松地将一个数组分成多个页面,并提供一个用户友好的分页导航界面。无论是对数据库查询结果还是普通数组,它都能很好地工作。

## 安装和配置 will_paginate

首先,我们需要在 Gemfile 中添加 `will_paginate` gem 的引用:

ruby

gem 'will_paginate', '~> 3.3'

然后,在终端中运行 `bundle install` 来安装 gem。

接下来,我们需要在需要分页的控制器中引入 `will_paginate/array`:

ruby

# app/controllers/posts_controller.rb

require 'will_paginate/array'

## 如何使用 will_paginate 分页一个数组

假设我们有一个包含一些数据的数组,比如一个存储博客文章的数组:

ruby

@articles = [

'文章1',

'文章2',

'文章3',

'文章4',

'文章5',

'文章6',

'文章7',

'文章8',

'文章9',

'文章10',

'文章11',

'文章12',

'文章13',

'文章14'

]

现在,我们想将这个数组分页显示,每页显示 3 篇文章。这里我们可以使用 `will_paginate` 来实现:

ruby

# app/controllers/posts_controller.rb

def index

@articles = [

# ... (上面的数组数据) ...

]

@articles = @articles.paginate(page: params[:page], per_page: 3)

end

在上面的代码中,我们首先定义了 `@articles` 数组,然后使用 `paginate` 方法将其分页。`params[:page]` 表示当前要显示的页数,`per_page` 表示每页显示的文章数量。

## 在视图中添加分页导航

最后,我们需要在视图中添加分页导航链接,以便用户可以轻松地切换不同的页面。在视图文件中,可以这样做:

erb

<% @articles.each do |article| %>

<%= article %>

<% end %>

<%= will_paginate @articles %>

`will_paginate` 方法会自动生成分页链接,使用户可以点击进行导航。

##

通过使用 `will_paginate` gem,你可以方便地在 Ruby on Rails 中对数组进行分页,提供更好的用户体验。无论是对数组还是数据库查询结果,这个 gem 都能很好地满足你的分页需求。希望本文能帮助你更好地理解如何使用 `will_paginate` 来分页数组数据。