🧤
部分テンプレートの一部を変更する方法
この記事で分かること
- 新規フォームと編集フォームで表示したいボタンを変更する
- 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ヶ月目のときに悩んだポイントを投稿しました。部分テンプレートができる幅が広がるので、必ず覚えていきたい内容ですね!
この記事をかいた人
23/6/1にDWCに入学し、主にRailsの学習に取り組みました。卒業が近づきこれから何で学習をするか悩んだときに、技術ブログをしようと考えました。初心者ですがよろしくお願いします。
Discussion