在 HTML 页面上循环浏览 Ruby 数组中的值
Posted
技术标签:
【中文标题】在 HTML 页面上循环浏览 Ruby 数组中的值【英文标题】:Cycle through values in an Ruby Array on a HTML page 【发布时间】:2012-10-17 01:34:48 【问题描述】:我正在使用这个查询从我的控制器中的数据库中获取一些行:
@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 <%= row1[0] %>></td>
<td ><%= row1[2] %></td>
<td ><%= row1[1] %></td>
</tr>
</table>
我在这里获取了很多行。但我想一次只显示 15 个结果,并且有一些按钮“下一个”和“上一个”可以循环显示结果。我该怎么做?
【问题讨论】:
javascript 分页或will_paginate
会做 javascript 分页会节省一次又一次地请求服务器,而不是will_paginate
@user1438735 :你能给我看一些示例代码吗?谢谢
【参考方案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
视图助手将生成分页链接,如 [prev] [1] [2] [3] [next]。查看 github 上的 will_paginate gem 了解更多选项。
【讨论】:
【参考方案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 是每页的项目数。
【讨论】:
我找不到任何代码告诉我如何在执行 sql2 类型查询时使用分页....你能帮帮我吗?【参考方案3】:如果您使用的是 Rails 3,请查看 kaminari 进行分页:https://github.com/amatsuda/kaminari。您可能对Paginating a generic Array object 功能感兴趣。但是,请记住,这不会为您的 SQL 查询添加偏移量和限制。
Kaminari 被广泛认为比 Rails 3 中的 will_paginate 更好,因为它利用了 Rails 作用域并且不会全局污染对象。
【讨论】:
以上是关于在 HTML 页面上循环浏览 Ruby 数组中的值的主要内容,如果未能解决你的问题,请参考以下文章