はじめに
Ruby on Railsのlink_toの読み方についてなんとなく理解したので
自分用メモとして投稿します。
(自分にしかわからない書き方となっていること、ご了承ください)
link_toのパスの引数に.idって、いるの?いらないの?
link_toの記述方法
<%= link_to "表示したいテキスト", url又はパス %>
補足:link_toのHTTPメソッドは特に設定しなければGETになる。
そのため、もし設定したい場合は下記のようにmethodオプションを設定すること
<%= link_to "表示したいテキスト", url又はパス, method: :HTTPメソッド %>
今回のコード
<%= link_to "編集", edit_list_path(@list.id) %>
コードの意味:ブラウザに”編集”と表示させるよ。
”編集”を押すとedit_list_path(@list.id)に飛ぶよ。
疑問点。。。
対象のコントローラには@list = List.find(params[:id])
と定義して、
Listモデル?テーブルの対象のidの情報をもってきている。
そのため、link_to
のパスの記述で引数には.id
いらないのでは?重複してない?
やってみよう!
.id
を消してみた!
<%= link_to "編集", edit_list_path(@list) %>
結果。。。
表示されるし、エラーも出ませんでした。
念のためメンターさんに質問したところ下記の回答が得られました。
メンターさんの回答
対象のコントローラには@list = List.find(params[:id])
と定義しているので
Listテーブルの対象のidの情報のレコード全てをもってきている。(今回の場合、idとtitleとbody)
対象のidのレコード全てを持ってきてはいるものの、どのidかということはfind(params[:id])
の記載で一応特定できるので、パスの引数に.id
があってもなくてもいける状態になる。
そのため、今回の事象についてはあってもなくても問題ないですが、.id
を書く方が丁寧ではありますよね。
とのことです!
終わりに
まだまだ細かい点が理解できていないので少しずつでも解消していきたいと思います!