見出し画像

【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円で購入することが可能です!
あなたの投げ銭がモチベーションに繋がるので、よろしくお願いします!


ここから先は

146字

¥ 100

この記事が気に入ったらサポートをしてみませんか?