Dockerを使った開発環境でページネーション機能を作る
{dockerを使った開発環境でページネーション機能}
今回は有名なgem であるkaminariを使ってページネーション機能を実装する。
記事の対象者
・Dockerの環境構築が出来る方
・ページネーション機能を一から知りたい方
ページネーション機能 とは??
ページネーション機能とは、大量のデータをviewで表示する際に、全部表示するのではなくページごとに分けて表示する方法である。
開発環境
Rails 5.0.0.1
bootstrap 4.0.0
今回はbootstrapを導入し、Dockerの環境構築が済んでいる状態を想定する。
デモ
1. gemをインストール
Gemfile内にgem 'kaminari'
と記述する。
その後以下のコマンドを実行する。
$ docker-compose build
$ docker-compose up -d
$ docker-compose build
はgemのインストールやdockerのimageを実行するときに使う。
$ docker-compose up -d
でコンテナを起動する。
2. kaminariを使う準備を整える
・kaminariの設定ファイルを作成
$ docker-compose exec web bundle exec rails g kaminari:config
・kaminariのviewファイルを作成
※今回はBootstrapを使用する。
$ docker-compose exec web bundle exec rails g kaminari:views bootstrap4
このコマンドを実行するとbootstrap4のページネーションに合わせたデザインが自動で生成される。(便利...!)
3. コントローラーを設定
kaminariをインストールしたことによりモデルのクラスな対して page メソッドが使用できるようになった。
ここでは掲示板サイトを作ることを目的として @board
というインスタンス変数を使用すると仮定して、
コントローラーのindexアクション内で以下の記述をする。
def index
@boards = Board.page(params[:page])
end
これにより引数に渡したページに表示するデータを取得できる。
デフォルトでは1ページにつき、25件のデータを取得する。
この時点では、page というパラメーターが渡されることはないため、常に1ページ目が表示される。
そのため、viewを追加して表示できるようにする。
4. viewを作成する
kaminariをインストールしたことにより、 pagenate ヘルパーが使えるようになった。
よってこれを使ってindex.html.erb
に以下の記述をする。
<%= paginate @boards %>
paginate の引数には一覧表示対象を渡す。
となって、ページネーション機能が完成!
Author And Source
この問題について(Dockerを使った開発環境でページネーション機能を作る), 我々は、より多くの情報をここで見つけました https://qiita.com/yuukou/items/d45d567ef61245453f38著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .