RailsのCRUDを簡単に作ってくれるとても便利な機能Scaffoldについて。
便利だけど、高度にリファクタリングされており、初学者には理解に苦しむところがあると思うのでまとめました。
まずは、Scaffoldでアプリ立ち上げまでの手順のおさらい
# railsのバージョン5.2.5、データベースはpostgresqlで作成する場合
$ rails _5.2.5_ new ファイル名 -d postgresql
$ cd ファイル名
# モデルクラス名はdiaryとして作成する場合
$ rails g scaffold diary title:string body:text
$ rails db:create
$ rails db:migrate
以下は、rails g scaffold diary title:string body:text にてscaffoldを生成した際のビューファイルの中の一部です。
<tbody>
<% @diaries.each do |diary| %>
<tr>
<td><%= diary.title %></td>
<td><%= diary.body %></td>
<td><%= link_to 'Show', diary %></td>
<td><%= link_to 'Edit', edit_diary_path(diary) %></td>
<td><%= link_to 'Destroy', diary, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
</tbody>
この中で、link_toメソッドのpathがかなり省略されて記述されています。
省略せずに書くと以下のようになります。
<td><%= link_to 'Show', diary_path(diary.id) %></td>
<td><%= link_to 'Edit', edit_diary_path(diary.id) %></td>
<td><%= link_to 'Destroy', diary_path(diary.id), method: :delete, data: { confirm: 'Are you sure?' } %></td>
ちなみに、method: :deleteは、klink_toヘルパーメソッドで生成するリンク先へのリクエストメソッドをDELETEすとするもの
コメント