🧤

部分テンプレートの一部を変更する方法

2023/10/02に公開

この記事で分かること

  • 新規フォームと編集フォームで表示したいボタンを変更する
  • publicとadminで表示する部分を変更する

前提条件

  • 新規フォームが完成している
  • update,editのRoutingやControllerが実装済み
  • デバイスが実装済み

実装手順

  • 新規フォームと編集フォームで表示したいボタンを変更 (new_record?)
  • publicとadminで表示する部分を変更 (admin_signed_in?)

実装方法

実装手順に沿って紹介します。今回はViewの記述のみで完結します。

viewを編集

新規フォームと編集フォーム編

items/_form
 <h4 class="align-middle text-center">おかしを紹介する</h4>
 <%= form_with model: item,local:true do |f| %>
 <!-- フォーム内容 略 -->

  <div class="form-group row justify-content-center">
+   <% if f.object.new_record? %>
      <%= f.submit "新規登録", class: 'btn btn-success px-5' %>
+   <% else %>
+     <%= f.submit "変更を保存", class: 'btn btn-success px-5' %>
+   <% end %>
  </div>
 <% end %>
<% if f.object.new_record? %>とは?

論理値メソッドで、レコードにデータが存在していれば〇〇、存在していなければ✖️✖️と場合わけすることができる。
今回は新規投稿(データがなし)ならば「新規登録」データの変更(元データあり)ならば「変更を保存」で場合わけした。

publicとadmin編

items/_form
 <h4 class="align-middle text-center">おかしを編集する</h4>
 <%= form_with model: item,local:true do |f| %>
 <!-- フォーム内容 略 -->

  <div class="form-group row justify-content-center">
+   <% if admin_signed_in? %>
      <%= f.submit "管理者権限で変更する", class: 'btn btn-success px-5' %>
+   <% else %>
+     <%= f.submit "変更を保存", class: 'btn btn-success px-5' %>
+   <% end %>
  </div>
 <% end %>
<% if admin_signed_in? %>とは?

deviseメソッドの1つ。和訳通りで、adminでサインインしているならば〇〇、していなければ✖️✖️と場合わけすることができる。
またadminの部分は変更が可能で、(user_signed_in?),(customer_signed_in)など状況に応じて使用できる

感想

学習2ヶ月目のときに悩んだポイントを投稿しました。部分テンプレートができる幅が広がるので、必ず覚えていきたい内容ですね!

この記事をかいた人

https://twitter.com/tya_dwc
23/6/1にDWCに入学し、主にRailsの学習に取り組みました。卒業が近づきこれから何で学習をするか悩んだときに、技術ブログをしようと考えました。初心者ですがよろしくお願いします。

Discussion