Rails kaminariでページネーションを実装する
読んだもの
学んだこと
kaminariの使い方はすごく簡単。
tasks_controller.rb
def index @tasks = Task.all.page(params[:page]) # @tasks = Task.all <- kaminari利用前のコード end
index.html.erb
<h1>タスク一覧</h1> <ul> <% @tasks.each do |task| %> <li> <%= link_to task.id, task_path(task) %> : <%= task.content %> </li> <% end %> </ul> # ページネーションしたいところに記述する <%= paginate @tasks %> <%= link_to '新しいタスクを登録', new_task_path %>
controllerのTask.all部分に .page(params[:page])
を追加して、viewのページネーションしたいところに <%= paginate @tasks %>
をつけるだけ。
表示数を変更する
1ページの表示数はデフォルトで26に設定されており、変更したいときは .per(number)
をつける。
def index @tasks = Task.all.page(params[:page]).per(10) end
表示順番を降順にする
表示順番を降順にしたい場合は、Controller側で order
を指定する。
tasks_controller.rb
def index @tasks = Task.order(created_at: :desc).page(params[:page]).per(10) end
こんな感じ。