1

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

@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 查询的情况下应用分页以及如何在视图中显示结果。

4

2 回答 2

3

如果要使用 sql 查询进行分页,则需要使用带有限制子句的 mysql offset关键字。所以你会得到准确的分页结果。我希望下面的代码对您有所帮助。

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)
于 2012-10-28T07:37:46.277 回答
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
于 2012-10-28T02:10:36.400 回答