LoginSignup
0
0

More than 1 year has passed since last update.

ruby on rails paramsまとめ〜前半〜

Posted at


この投稿では、ruby on railsのparamsのあれこれについてまとめます。
少しでも参考になったら幸いです。

paramsとは

paramsとは、どの画面を表示するか指定したり、データを保存するために、
クライアントから送られるデータ郡です。
ruby on railsは、MVCモデルでデータを送受信するので、paramsがどこからどこに渡されているかを
MVCの図で表してみます。

図を参照しながら、「この記事を表示するためにparamsがどう使っているか」という例で、説明します。
まず、みなさんがこのブログを見るために使っているPCやスマホなどがクライアントです。
クライアントで、この記事を表示するためにこのブログの記事一覧からクリックいただいたと思います。
クリックすると、paramsで「paramsについての記事が見たい!」というデータをサーバーに送り、
サーバーがこの記事の文字や画像を返しているんですね。

paramsで送っているデータがどんなものかをもう少し詳しく補足します。
例えば、このブログの全ての記事には、被らない番号がそれぞれ振られているとします。
この記事が10番だとしたらクライアントからは、「10番」ってデータをparamsに入れて、
サーバーに送っているということですね。

ここまででなんとなく、paramsの役割、どんなものかがご理解いただけましたかね?
わからないという方は、ページ下部のコメントでお問い合わせください。

この記事では、どの画面を表示するかを選択するためのparamsについて、深ぼって解説していきます。
別記事、paramsまとめ〜後半〜で、データを保存するためのparamsについて解説します。

params理解のための自作ミニアプリについて

解説を進める前に、解説に利用する自作ミニアプリの機能を事前に紹介します。
今回のサンプルアプリは、記事一覧表示、記事詳細表示、記事作成機能を簡易的に作成しています。

トップページでは、記事一覧の表示、記事の作成ができるようにしています。

また、トップページの記事をクリックすると、記事の詳細を確認できるようにしています。

画面表示選択のparamsについて

この章では画面表示判断をするためにparamsをどのように利用しているかを説明していきます。

トップページから記事をクリックすると、記事の詳細が表示されていましたよね。


この動作では、どの記事を表示するかの判断にparamsを利用しているので、詳しく解説していきます。
また、最初にお見せしたMVCの図に立ち返っていくと、paramsは送る側と受け取る側がいますよね。
そのため、分けて順に解説してきます。

paramsを送る

paramsは、記事の一覧画面から記事のリンクをクリックすることで、送っているんですね。
コードを見ないと分からないので、早速お見せしようと思います。

いろいろ書いてありますが、今回は赤枠の行に注目してください。
赤枠の行で、クリックしたらどんなページを表示するかを制御しています。
赤枠内で、サーバーに送るリクエスト内容を指定しており、「sample.id」が肝です。
「sample.id」が記事に割り振られた被らない数字をparamsとして送っています。
辿っていくと「sample」は「@samples」から、「@samples」はコントローラーから送られているものですね。
なので、コントローラーの記述もお見せします。

コントローラーで、「@samples」はテーブルに保存されている全てのSampleを取得しています。
「Sample」は記事データを管理するテーブルととしているので、@sampleは全ての記事を取得しているわけですね。

ここまでまとめます。
記事をクリックした時、どの記事を見たいかをサーバーに伝えるため、
「sample.id」という記事に割り振られたかぶらない数字をparamsとしてサーバーに送っているということです。

paramsを受け取る

コントローラーでどうやって受け取っているかを早速確認してみましょう。
rails sコマンドを実行したターミナルにparamsのログが表示されています。

記事1をクリックしたときの例です。
Paramaters: {"id=>"1"}となっており、paramsに「1」が入っていることが確認できます。
画面表示選択のためのparamsでは、Parameters、idは決まり事なので、
詳しい説明は省きますが、イメージ図を載せておきます。

「params(Parameter)」って箱のなかに、「id」という箱が入っている。
「id」って箱の中には、「1」が入っている。というイメージを持っていただければ大丈夫です。

このようにparamsで記事に割り振られたかぶらない数字をparamsで送り、コントローラーで受け取ることで、記事が複数ある中からどの記事を選択したかを判別しているですね。

0
0
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
0
0