ヨージとプログラミング

プログラミング勉強の記録

【Rails】Pagyで1ページに2つのページネーションを設置する

先に結論を書きます

ページ内にタブ(tab)を設置し、表示内容を切り替えることがあると思います。

(イメージ)

通常(ページネーション1つの時)であれば次のように定義すると思います。

def index
  @pagy, @users = pagy(User.all)
end

これとは別に例えば男性ユーザーだけのページネーションを定義したい場合は、page_param:を設定してあげるだけでいけます。

def index
  @pagy_all, @users = pagy( User.all, page_param: :page_all )
  @pagy_men, @men = pagy( User.where(男性), page_param: :page_men )
end

ポイントとしては、@pagyの部分が被らないように任意に設定すること。
page_param:で設定した値はクエリになるので考えてネーミングしましょう。
ex) https://hogehoge/?page_all=1&page_men=2

Pagyの情報は少ない

新興のページネーションgemなだけあってkaminariやwill_paginateと比べると圧倒的に情報は少ないです。というか、今回の1actionで2つのページネーションを定義する方法も、多分公式ドキュメントにもはっきりとは載ってないんじゃないかと思います(私が見つけられなかっただけの可能性もありますし、遠回しな説明はありました)
kaminariを使っている方はいくらでも情報があったのでググってみてください。

参考文献

www.imaginarycloud.com