読者です 読者をやめる 読者になる 読者になる

コンパイラかく語りき

import { Fun } from 'programming'

ロシアップ ver2.2 「独自ペジネーション」

Railsで、独自ペジネーションを実装しました。

 

今まで            -> kaminariというライブラリ

今日やったの -> ActiveRecordlimitoffset

 

ライブラリに頼っていたのを、自分なりにRails書きました。

 

kaminari実装記録↓

chuckwebtips.hatenablog.com

 

参考にしたもの

「Ruby on Rails4 アプリケーションプログラミング」という書籍を参考にしました。

ActiveRecordの limit と offset を使えばペジネーションを実装できるよ!とのことで、試してみました。

 

limit : データ取得件数の制限

limit - リファレンス - - Railsドキュメント

 

offset : データ取得開始位置の指定

offset - リファレンス - - Railsドキュメント

 

要は、x 番目から y 個取得してねー。という感じ。

今回の場合、xがページで、y 個が表示件数です。

 

やったこと

まずはともあれコントローラ。

f:id:chuck0523:20151027214319p:plain

なにやら色々書いてます。

 

上の方にあるのが、表示件数(page_size)とページ(page_num)ですね。

ページはリクエストパラメータで受け取ります。

 

そのあとの4行は表示用のインスタンス変数です。これらをリストに表示して、ユーザーが選択する感じです。

そして末尾でデータを取得しています。

 

ビュー

ビュー書きました。

f:id:chuck0523:20151027214549p:plain

 

ブラウザでの表示を見たほうが早いですね。

f:id:chuck0523:20151027214809p:plain

こんな感じです。

それぞれのリンクには、コントローラで定義したインスタンス変数が格納されています。

なので、それをコントローラにパスする感じ。(もっと良い実装方法があるはず…)

 

ヘルパー化したよ

せっかくなのでヘルパービューとして、部品化しちゃいました。

f:id:chuck0523:20151027214943p:plain

ヘルパーを使ったのなんて、Railsチュートリアル以来です。

初めて自発的に使いました。すごくカンタンで驚いています。

 

f:id:chuck0523:20151027215031p:plain

部品を呼び出すのはこの1行。たった1行。便利。

あとで使い回すと思うので、いまのうちに部品化してみました。

 

振り返り 

修正前

f:id:chuck0523:20151027233212p:plain

 

修正後

f:id:chuck0523:20151027233231p:plain

 

まとめ

という感じで、あっさりとペジネーションを実装することができました。

ライブラリも便利ですが、個人的には自作できるところは自作していきたい派です。

 

それにしても、ペジネーションのデザイニングがとても悩ましい…。

 

 

russiup.herokuapp.com