使用SQL查询(mysql2类型)获取数据时在Ruby中使用分页

时间:2012-10-28 00:12:24

标签: ruby-on-rails ruby ruby-on-rails-3 will-paginate kaminari

我的控制器中有一个查询,如下所示:

@temp = connection.execute("select test_id from mastertest limit 500;")

现在,我在视图中的表格中显示此处提取的结果。但我想将结果限制为每页10行。我知道我可以使用will_paginate和kaminari

https://github.com/amatsuda/kaminari

https://github.com/mislav/will_paginate

但是,任何人都可以在我的SQL查询中使用确切的语法或示例代码来应用分页,以及如何在视图中显示结果。

2 个答案:

答案 0 :(得分:3)

如果您希望使用sql查询进行分页,则需要将mysql offset 关键字与 limit 子句一起使用。所以你会得到像结果一样的精确分页。我希望下面的代码可以帮到你。

current_page = current_page || 1
per_page = 10
records_fetch_point = (current_page - 1) * per_page

query = "select test_id from mastertest limit #{per_page} 
         offset #{records_fetch_point};"

@temp = connection.execute(query)

答案 1 :(得分:1)

你能不能只使用mastertest模型?而不是connection.execute
(模型在app / models中)

#using kaminari
relation = Mastertest.order(:id).limit(500).page(1).per(10)

relation.each do |row|
  puts row.test_id
end