1

コントローラーに次のようなクエリがあります。

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

ここで取得した結果をビューのテーブルに表示します。しかし、結果を 1 ページあたり 10 行に制限したいと考えています。will_paginate と kaminari を使用できることを知っています

https://github.com/amatsuda/kaminari

https://github.com/mislav/will_paginate

しかし、SQLクエリの場合にページネーションを適用するための正確な構文またはサンプルコードと、ビューに結果を表示する方法を教えてください。

4

2 に答える 2

3

SQL クエリを使用してページネーションが必要な場合は、mysqlオフセットキーワードを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)
于 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 に答える