循环访问HTML页面上的Ruby数组中的值

时间:2012-10-26 18:59:27

标签: html ruby-on-rails ruby ajax ruby-on-rails-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个结果,并且有一些按钮“下一个”和“前一个”会循环显示结果。我该怎么做?

3 个答案:

答案 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以获取更多选项。