2
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

rails のparams[:id]の正体

Last updated at Posted at 2020-06-13

railsでアクションを定義するときに受け取るデータを

params[:id]

と表現することが多かったのだけどいまいち意味がわかっていなかったのでメモ。
同じようなことで悩んでいる方の参考になればと思う。

前提条件

例えばこんな感じで投稿を表示する画面で投稿の詳細を確認する機能を実装したかったとする。Myblog.png
詳細表示するアクションはshowアクションなのでコントローラーにshowアクションを定義しつつそれに対応するビューを用意してあげると良さそう。

showアクションの設定

多くのrailsの学習サイトなどではshowアクションは以下のように表現されていることが多いんじゃないかと思う。

  def show
    @post = Post.find(params[:id])
  end

これは以下のように分解できて、それぞれ以下のような意味である。
Post…Postモデル。データベース上に保存されたPostのデータ
find…Postモデルから条件に一致するものを指定して取得する方法
params[:id]:…findで取得してくるデータの条件
params…特定のツイートのURLを開いたときなどにくっついてくるデータ
:id…ツイートに紐付いたid

つまりこれでPostモデルの中からユーザーがアクセスしようとしているpostのidに対応しているデータを拾ってきます、という意味になる。

@post…上記を外部のデータ(というかビュー)でも使えるようにインスタンス変数に代入

で、それをインスタンス変数に代入することでビューファイルに表示できるようにしているわけです。

実際にルーティングを調べてみると

post GET    /posts/:id(.:format)              posts#show

postsコントローラーのshowアクションに対応するルーティングのパスはpost/:idとある。この:idというのがここのpostに対応しているので、showアクションで呼ぶビューには同じidのpostが表示されるようにしたい。なのでshowアクションで上記に書いたように@postを定義してビューに読み込んでいるのだ。

2
6
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
2
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?