こんにちは。菜笑なえです。
今回は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パラメータが必要な場合は、インスタンス変数と任意のパラメータを渡すことになります。
それ以外は、任意のパラメータをハッシュで渡すだけでした。
ちょっとしたことなんですが、ふとどう書けばいいんだっけとなりますね。