LoginSignup
0
0

More than 1 year has passed since last update.

Ruby on Rails link_toのパスの引数に.idって、いるの?いらないの?(自分用メモ)

Posted at

はじめに

Ruby on Railsのlink_toの読み方についてなんとなく理解したので
自分用メモとして投稿します。
(自分にしかわからない書き方となっていること、ご了承ください:bow:)

link_toのパスの引数に.idって、いるの?いらないの?

link_toの記述方法

<%= link_to "表示したいテキスト", url又はパス %>

補足:link_toのHTTPメソッドは特に設定しなければGETになる。
   そのため、もし設定したい場合は下記のようにmethodオプションを設定すること

<%= link_to "表示したいテキスト", url又はパス, method: :HTTPメソッド %>

今回のコード

show.html.erb
<%= link_to "編集", edit_list_path(@list.id) %>

コードの意味:ブラウザに”編集”と表示させるよ。
       ”編集”を押すとedit_list_path(@list.id)に飛ぶよ。

疑問点。。。

対象のコントローラには@list = List.find(params[:id])と定義して、
Listモデル?テーブルの対象のidの情報をもってきている。
そのため、link_toのパスの記述で引数には.idいらないのでは?重複してない?

やってみよう!

.idを消してみた!

show.html.erb
<%= link_to "編集", edit_list_path(@list) %>

結果。。。

表示されるし、エラーも出ませんでした。
念のためメンターさんに質問したところ下記の回答が得られました。

メンターさんの回答

対象のコントローラには@list = List.find(params[:id])と定義しているので
Listテーブルの対象のidの情報のレコード全てをもってきている。(今回の場合、idとtitleとbody)
対象のidのレコード全てを持ってきてはいるものの、どのidかということはfind(params[:id])の記載で一応特定できるので、パスの引数に.idがあってもなくてもいける状態になる。
そのため、今回の事象についてはあってもなくても問題ないですが、.idを書く方が丁寧ではありますよね。

とのことです!

終わりに

まだまだ細かい点が理解できていないので少しずつでも解消していきたいと思います!

0
0
2

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