【Rails】 Paramsの解説
※この記事は有料設定ですが、無料で全て読めます。
役に立ったら投げ銭してください。
Railsチュートリアル完走後くらいの時の自分を振り返って、「あの時こんなことを教えてくれたらな」とか「あの時こんなことを知りたかった」と思った内容を書いてます。
◇Paramsってなんだ?
Railsガイドをそのまま引用すると
URLから送られてきた値やフォームで入力した値をparams[:パラメータ名]で取得する
とあります。説明だけを見てもよく分からないですね。
一つ一つ紐解いてみたいと思います。
◇「URLから送られてきた値」や「フォームで入力した値」とは?
そもそもwebの通信とは
①「HTTPリクエスト(クライアントからサーバーへの問い合わせ)」
②「HTTPレスポンス(サーバーからクライアントへの応答)
この「行き」と「返り」のHTTPパケットのやりとりで実現しています。
・HTTPリクエスト
HTTPリクエストにはGetメソッドとPostメソッドという、2種類のメソッドが主に使用されます。(他もありますが割愛します)。
・Getメソッド
Getはいわゆる「問い合わせ」をする時に使われるメソッドです。
平たく説明すると、「このurlのページを見たい」という要求で使われます。
・Postメソッド
ブログなどのwebサイトの場合は一方的にサーバーの情報を見るだけなのでGetのみで完結してしまうかもしれませんが、例えばSNSの場合はそうはいきません。ユーザーがプロフィールを登録したり投稿したり、つまりサーバー側へ情報を送りつける仕組みが必要です。
アカウント作成などを考えれば分かりやすいですが、「名前、メールアドレス、パスワード」などの登録フォームがあります。
この時フォームに入力された情報をサーバーへ送信する時に使われるのがPostメソッドです。
実はGetでもPostのように情報をサーバーへ送りつけることができます。Getメソッドの場合は、URLにパラメーターを貼り付ける形で送信できます。
これをURLクエリと呼んだり、この情報をクエリパラメーターと呼んだりします。具体的には
?name=shinjo-kun&email=shinjo@gmail.com&password=12345678
みたいな文字列がurlに負荷されます。ただしこれではパスワードが表に見えてしまうのでセキュリティー上よろしくないですね。
なのでURLクエリを用いるのは特殊なケースです(セキュリティー上問題ないパラメーターの場合)。
つまり?
paramsの定義をおさらいしてみましょう。
URLから送られてきた値やフォームで入力した値をparams[:パラメータ名]で取得する
「URLから送られてきた値」とはGetメソッドで送られた情報、「フォームで入力した値」とはPostメソッドで送られた情報を指しています。
ここで重要なのは、GetであれPostであれ、パラメーター形式でサーバーへ送信しているということです。
Getの場合はURL上に、Postの場合はボディの中にパラメーターが格納されます。(詳しくはこちらを参照ください)
つまり、paramsメソッドはこのパラメータを読み取るための受け皿です。
◇params:[パラメータ名]で値を取得って?
paramsはハッシュ
paramsはハッシュのような動作をしています(ハッシュではないですが、動作としては同じです)。つまりparamsの中身が
{ :controller => 'users', :action => 'show', :id => 1 }
であればparams[:id] で 1 を取得できることになります(key を指定して該当の value を取得している)。
◇最後に、どのように勉強すればいいか?
私の場合ですが、controllerの色んな箇所でbinding.pryをし、デバッグモードでparamsを叩いていたら理解が深まりました。
各所でのparamsの中身の移り変わりを、1つ1つ確認したら理解が早まると思います。
=======================================================
◇この記事が役に立ったら
記事の内容としてはこれでおしまいですが、もしもこの記事が役に立たら、ページ下の「気に入ったらサポート」ボタンから投げ銭して頂けると幸いです!
noteの会員でない方でも、下の「記事を購入する」ボタンからこの記事を100円で購入することが可能です!
あなたの投げ銭がモチベーションに繋がるので、よろしくお願いします!
ここから先は
¥ 100
この記事が気に入ったらサポートをしてみませんか?