renderを使っていて、<%= render 'comments/comments', { comments: @comments } %>という記載方法がありました。
なんだこれ!と思ったので、勉強した内容をアウトプットしていきます。
読者の皆様に少しでも参考になれば幸いです。
実装内容
掲示板に対し、連続したコメントを作成する。
boards(掲示板)モデルとcommentsモデルを1:多の関係で紐付けしています。
コメントエリアの作成
views/boards/show.html.erb
'comments/comments'は、commentsファイルにある_comments.html.erbという部分テンプレートを呼び出しています。
{ comments: @comments }は、部分テンプレートであるviews/comments/_comment.html.erb内でcommentという変数を使っているのでこのように記載します。
※views/boards/show.html.erb内でcommentsと複数形で定義してます。これには理由があるので、後ほど説明いたします。
partial
部分テンプレートを呼び出す時にはpartialを使って、<%= render partial: 'comments/comments' %>と記載できますが、呼び出している部分テンプレートを強調しているものなので、省略しても構いません。
しかしlocalオプションを使用している時は、partialを付けないとエラーになってしまうので注意してください。
views/comments/_coomments.html.erb
ここでrenderの呼び出しがcommentsとなっています。これは、render commentsの複数形でcommentパーシャルをコメントの件数分eachして表示しているのです。
これは、renderでオブジェクトの集合(コレクション)を指定する記法の省略形です。
なるほど、each文が隠れていたからコメントが連続して表示されるのか。
ここまで調べるのにかなりの時間がかかりました笑
参考ページ
最後に
Railsの規約を前提とした実装は現場でもよく出てくるみたいなので、勉強する必要性を感じますね。
最後まで読んでいただき誠にありがとうございました。