3

我正在使用以下查询从控制器中的数据库中获取一些行:

@main = connection.execute("select code_ver, result from mastertest;")

现在在我的 html.erb 中,我在这样的表格中显示结果:

<% @level1.each do |row1| %>
<table id="tbl_main1" name="tbl_main1">
    <tr bgcolor="#D1D1D1">
        <td width="60%" <%= row1[0] %>></td>
        <td width="20%"><%= row1[2] %></td>
        <td width="20%"><%= row1[1] %></td> 
    </tr>
</table>

我在这里取了很多行。但我想一次只显示 15 个结果,并且有一些按钮“下一个”和“上一个”可以循环显示结果。我该怎么做?

4

3 回答 3

2

看看这个宝石https://github.com/mislav/will_paginate

Will_paginate 可能对您要查找的内容有用。

那里还有其他宝石,但我发现 will_paginate 可以满足分页需求。

编辑 如果您打算对您正在执行的数组进行分页,您可以执行以下操作:

require 'will_paginate/array'

进而your_array.paginate page: x, per_page: y

x 将是您要显示的页面,y 是每页的项目数。

于 2012-10-26T19:01:46.113 回答
2

如果您使用的是 Rails 3,请查看 kaminari 进行分页:https ://github.com/amatsuda/kaminari 。您可能对Paginating a generic Array object功能感兴趣。但是,请记住,这不会为您的 SQL 查询添加偏移量和限制。

Kaminari 被广泛认为比 Rails 3 的 will_paginate 更好,因为它利用了 Rails 范围并且不会全局污染对象。

于 2012-10-26T19:43:11.360 回答
1

我建议创建一个 Active Record 模型来表示您的 mastertest 数据库表。然后,在will_paginategem 的帮助下,您可以在控制器中执行以下操作:

@mastertests = MasterTest.all.paginate(:page => params[:page], :per_page => 15)

然后在你看来:

<% @mastertests.each do |mastertest| %>
  <td><%= mastertest.code_ver %></td>
  <td><%= mastertest.result %></td>
<% end %>
<%= will_paginate @mastertests %>

视图助手将will_paginate生成分页链接,如 [prev] [1] [2] [3] [next]。查看 github 上的 will_paginate gem 以获取更多选项。

于 2012-10-26T20:11:47.920 回答