LoginSignup
9
7

More than 1 year has passed since last update.

ログイン状態の出品者でも、売却済みの商品に対しては「編集・削除ボタン」が表示されないこと

Last updated at Posted at 2021-05-18

はじめに

ひたすらfurimaアプリを作成中です。

今回は複数の条件分岐が重なり、自分でも訳が分からなくなったのでまとめたいと思います。

やりたいこと

  • ログイン状態の出品者でも、売却済みの商品に対しては「編集・削除ボタン」が表示されないこと

  • ログイン状態の出品者以外のユーザーでも、売却済みの商品に対しては「購入画面に進む」ボタンが表示されないこと

①.ログイン中のユーザーと商品を出品したユーザーが一緒の場合かつ、商品が売り切れではない場合は編集ボタン・削除ボタンが出現する。

②.ログイン中のユーザーかつ、出品者以外のユーザーで商品が売り切れではない場合は購入ボタンが表示される。

最初に作成した記述

 <% if user_signed_in? %> #ログインしているユーザー限定
  <% if current_user == @item.user%> #出品者とログイン中のユーザーが一緒の場合
    <% unless @item.purchase_history.present? %> #商品が売り切れてない場合
      <%= link_to "商品の編集",  edit_item_path(@item.id) , method: :get, class: "item-red-btn" %>
        <p class="or-text">or</p>
          <%= link_to "削除", item_path(@item.id), method: :delete, class:"item-destroy" %>
    <% end %>
  <% else %>
    <%= link_to "購入画面に進む", item_purchase_histories_path(@item.id), class:"item-red-btn"%>
  end

すんごい重複してしまいました。
もっと簡潔に記述するには。。。

同じを条件をまとめてみる。

ログイン中が絶対条件だから大枠は if user_signed_in?

ログインしているユーザかつ出品者、そして商品がある場合のときだけ編集・削除ページ出現
<% if user_signed_in? && @item.purchase_history == nil %>
商品履歴は空っぽですよという意味。

<% if user_signed_in? && @item.purchase_history == nil %>
  <% if current_user == @item.user%>
    <%= link_to "商品の編集",  edit_item_path(@item.id) , method: :get, class: "item-red-btn" %>
       <p class="or-text">or</p>
         <%= link_to "削除", item_path(@item.id), method: :delete, class:"item-destroy" %>
  <% else %>
          <%# 商品が売れていない場合はこちらを表示しましょう %>
          <%= link_to "購入画面に進む", item_purchase_histories_path(@item.id), class:"item-red-btn"%>
       <% end %>
    <% end %>

紙などに書いて整理することが大事という事が分かりました。

9
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
7