我使用此查询从控制器中的数据库中获取一些行:
@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个结果,并且有一些按钮“下一个”和“前一个”会循环显示结果。我该怎么做?
答案 0 :(得分: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是每页的项目数。
答案 1 :(得分:2)
如果您使用的是Rails 3,请查看kaminari的分页:https://github.com/amatsuda/kaminari。您可能对Paginating a generic Array object功能感兴趣。但是,请记住,这不会为SQL查询添加偏移量和限制。
对于Rails 3来说,Kaminari被广泛认为比will_paginate更好,因为它利用了Rails范围并且不会全局污染对象。
答案 2 :(得分:1)
我建议创建一个Active Record模型来表示你的mastertest数据库表。然后,在will_paginate
gem的帮助下,您可以在控制器中执行以下操作:
@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
视图帮助器将生成像[上一页] [1] [2] [3] [下一页]这样的分页链接。查看github上的will_paginate gem以获取更多选项。