【Rails】link_toに任意のパラメータを付与する方法

rails

こんにちは。菜笑なえです。

今回はlink_to に任意のパラメータを付与する方法についてです。

  • 任意のパラメータのみ
  • idパラメータと任意のパラメータ
  • ネストしたパラメータ

上記3つのパターンについて記載していきます。

任意のパラメータのみ

viewでの記載

users_path(group_id: 1, team_id: 2)

変換されたURL
http://localhost:3000/users?group_id=1?team_id=2

受け取りデータ

Parameters {"group_id"=>"1", "team_id"=> "2"}

controllerで取得方法

params[:group_id]
params[:team_id]

idパラメータと任意のパラメータ

viewでの記載

edit_user_path(@user, group_id: 1, team_id: 2)

変換されたURL
http://localhost:3000/users/1/edit?group_id=1?team_id=2

受け取りデータ

Parameters {"group_id"=>"1", "team_id"=> "2", "id"=>"1"}

controllerで取得方法

params[:group_id]
params[:team_id]
params[:id]

ネストしたパラメータ

viewでの記載

users_path(team: {group_id: 1})

変換されたURL
http://localhost:3000/users?team%5Bgroup_id%5D=1
つまり
http://localhost:3000/users?team[group_id]=1

受け取りデータ

Parameters {"team"=>{"group_id"=>"1"}}

controllerで取得方法

params[:team][:group_id]

環境

Rails 5.2

おわりに

show, edit, update, destroy のようにidパラメータが必要な場合は、インスタンス変数と任意のパラメータを渡すことになります。
それ以外は、任意のパラメータをハッシュで渡すだけでした。
ちょっとしたことなんですが、ふとどう書けばいいんだっけとなりますね。

SNS

Twitter:@nae310_
Instagram:310nae