Scaffoldでプロジェクトを作ると下記のようなリンクがindexなどに生成されるとおもうが、link_toメソッドの中に何があるのかいまいち理解せずに進めてしまっていた。
<% @products.each do |product| %>
----省略ーーー
<span><%= link_to 'Show', product %></span>
<span><%= link_to 'Edit', edit_admin_product_path(product) %></span>
<span><%= link_to 'Destroy', admin_product_path(product), method: :delete, data: { confirm: 'Are you sure?' } %></span>
Showは表示される名前であることはわかると思います。
しかしproductってなんだ??
多分eachメソッドのproducなんだろうけどproduct単体でいるのがよくわからない。。。
実はこれ省略されているんです!!
参考
<span><%= link_to 'Show', product_path(product) %></span>
これが省略せずに書いたものです。productはパラメーターとして渡されているんですね。
下記の流れをちゃんと把握しているとよく理解できると思います!
- 画面からリンク押下してURLとHTTPメソッドがリクエストされる
- それが ターミナルにログとして出る
- コントローラーで想定したアクションが呼び出される
- どのコントローラー、アクションが選択されたかログとして出る
- アクションの途中で値が見たくなれば pやputs でできる
- レスポンスして画面が表示される