セカンドモデルのポイント

セカンドモデルのポイント

吉田先生

セカンドモデルでもコードをパーシャル化して見やすく整理しましょう。


セカンドモデルのポイント

1.リファクタリング

今回もパーシャルファイルを作成し、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 %>

2.パーシャルファイルを作成する

今回は赤文字部分のコードをリファクタリングします。

まず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ファイルに張り付けて保存します。

3.パーシャルファイルのコードを呼び出す

作成した _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 [スキルハブ]では無料の動画講座を多数公開しています。他校だと数万円するような講座が無料で受講できます。

無料講座一覧を見る

×