セカンドモデルでもコードをパーシャル化して見やすく整理しましょう。
今回もパーシャルファイルを作成し、show.html.erbのコードを見やすくします。
現在、show.html.erbのコードは下記のようになっています。
<%= form_with(model: [ @article, @article.comments.build ], local: true) do |form| %>
<p>
<%= form.label :commenter %><br>
<%= form.text_field :commenter %>
</p>
<p>
<%= form.label :text %><br>
<%= form.text_area :text %>
</p>
<%= form.submit %><% @article.comments.each do |comment| %>
<%= comment.commenter %>
<%= comment.body %>
<% end %>
<% @article.comments.each do |comment| %>
<%= comment.commenter %>
<%= comment.body %>
<% end %>
<%= link_to "一覧へ戻る", articles_path %>
今回は赤文字部分のコードをリファクタリングします。
まずapp/comments/viewsファイル内に_form.html.erbファイルを作成します。
form_withのコードをカットし、_form.html.erbファイルに張り付けて保存します。
次に、app/comments/viewsファイル内に_comment.html.erbファイルを作成します。
<% @article.comments.each do |comment| %>
<%= comment.commenter %>
<%= comment.body %>
<% end %>
のコメントをカットし、_comment.html.erbファイルに張り付けて保存します。
作成した _form.html.erb _comment.html.erbの2つのファイルを呼び出して表示させます。
パーシャルファイルを呼び出すときはrender というコマンドを使用するのでしたね。
しかしこのままとすると教程6で作成した、articleのform_withのパーシャルファイルを呼び出してしまいます。
これはrenderというコマンドが同じフォルダ内のパーシャルファイルを探しにいくという特性がある為です。
今回呼び出したいのはapp/vies/commentsフォルダにある_form.html.erbファイルです。
別のフォルダに保存されたパーシャルファイルを呼び出すには
render 'フォルダ名/ファイル名'のコマンドを使用します。
作成した _form.html.erb _comment.html.erbはどちらもapp/vies/commentsフォルダ内にある為、
<%= render ‘comments/_form.html.erb’%>
<%= render ‘comments/_comment.html.erb’%>
というコードで呼び出すことができます。
show.html.erbファイルに
<%= render ‘comments/form’ %>
<%= render ‘comments/comment’ %>
のコードを追加して保存します。
無料ビデオ講座のお知らせ
Skillhub [スキルハブ]では無料の動画講座を多数公開しています。他校だと数万円するような講座が無料で受講できます。