19
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ransackやkaminariで任意のパラメータを送る方法

Last updated at Posted at 2018-01-23

ransackやkaminariで任意のパラメータを送る方法

環境

Windows8
Rails 5.1.4
ruby 2.4.1

なぜこの記事を書いたのか

学校でRailsを使ってグループ開発をしている時に任意のパラメータを埋め込んで送る方法がわからず意外と詰まったので、私と同じ状況の人がいたら助けになると思って書きました。

後、自分が忘れないためです。

概要

ransackやkaminariで任意のパラメータを送る方法が存在します。
それを、ここに記します。

ransackとkaminariについて

ransack

Tableのソートが簡単にできたり、Viewの検索フォームが簡単に作れる便利なgemです。
ransackの使い方に関しては、下記のサイトが非常に分かりやすかったので是非参考にしてください。
[Ransackで簡単に検索フォームを作る73のレシピ]
(http://nekorails.hatenablog.com/entry/2017/05/31/173925)

kaminari

ページネーションが簡単にできる便利なgemです。
ページネーションは、情報量が多くてページが縦に伸びる時に便利です。
kaminariの使い方に関しては、下記のサイトが非常に分かりやすかったので是非参考にしてください。
[kaminari徹底入門]
(https://qiita.com/nysalor/items/77b9d6bc5baa41ea01f3)

本題

ransackやkaminariを使ったViewで任意のパラメータを送る方法を書いていきます

ransackのソート機能で任意のパラメータを送る方法

下のView部分で使われているプログラムのようにsort_linkにparamsを埋め込みます。

ransackを使ったView
<%= sort_link(@q , :name, "名前",params: {:param => "test"}) %>

paramsを埋め込んだ状態のリンクをクリックしてログを見てみます。
するとParamtersに任意のパラメータであるtestが送られている事がわかります。

ログ
Parameters: {"param"=>"test", "q"=>{"s"=>"name asc"}}

ちなみに絶対、params: {:param =>"任意のパラメータ"}の形式ではないと、駄目というわけではないです。下のようにもできます。

ransackを使ったView
<%= sort_link(@q , :name, "名前",tests: {:test => "param"}) %>
ログ
Parameters: {"q"=>{"s"=>"name asc"}, "tests"=>{"test"=>"param"}}

kaminariのページネーション機能で任意のパラメータを送る方法

kaminariの場合もransackの時とほぼ変わらないです。

kaminariを使ったView
 <%= paginate @user,params: {:param => "test"}%>
ログ
Parameters: {"page"=>"2", "param"=>"test"}

おまけ

短くなりそうなのでkaminariのパラメータに関してもう少し書きます。
実は、kaminariのパラメータの"page"という名前は変更する事が可能です。

下のように:param_name => "変更する名前"とします。
今回、変更する名前をtestにしています。

kaminariを使ったView
 <%= paginate @user,:param_name => 'test'%>

この状態でページネーションの2を押下します。

ログ
  Parameters: {"test"=>"2"}

pageがtestに変わりました。

タブを使っていたりして複数のページネーションが一つのページに存在する画面を作る際などに需要があると思います。

以上です。

19
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?