2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

商品購入機能のviewsファイル

Last updated at Posted at 2020-12-06

ログイン状態のユーザーが、URLを直接入力して売却済み商品の商品購入ページへ遷移しようとすると、トップページに遷移すること


class ItemsController < ApplicationController
  before_action :authenticate_user!,  except: [:index]
  before_action :set_item, only: [:edit, :update, :show, :destroy]

  
  def index
    @items = Item.all.order("created_at DESC")
    
  end

  def new
    @item = Item.new
  end

  def create
    @item = Item.new(item_params)
    if @item.save
      redirect_to root_path
    else
      render :new
    end
  end

  
  def edit
  end

  def update
    if @item.save
      redirect_to item_path
    else
      render :edit
    end
  end

  def show
  end

  def destroy
    if current_user.id == @item.user_id
       @item.destroy
      end
       redirect_to root_path
  end

  private

  def item_params
    params.require(:item).permit(:name, :image, :describe, :category_id, :condition_id, :delivery_fee_id, :prefecture_id, :datetime_id, :price, :user).merge(user_id: current_user.id)
  end

  def set_item
    @item = Item.find(params[:id])
  end



end

# params {A: aa, item:{name: jj} ,B:b}
# param.require(:item).permit(:name)



<%= render "shared/header" %>

<%# 商品の概要 %>
<div class="item-show">
  <div class="item-box">
    <h2 class="name">
      <%= @item.name %>
    </h2>
    <div class='item-img-content'>
      <%= image_tag @item.image.variant(resize: '630x500') ,class:"item-box-img" if @item.image.attached? %>
      <%# 商品が売れている場合はsold outを表示しましょう %>
    <% if  @item.order %>
      <div class='sold-out'>
        <span>Sold Out!!</span>
      </div>
      <%end%>
      <%# //商品が売れている場合はsold outを表示しましょう %>
    </div>
    <div class="item-price-box">
      <span class="item-price">
        ¥ <%= @item.price %>
      </span>
      <span class="item-postage">
        <%= @item.delivery_fee.name %>
      </span>
    </div>

    <%# ログインしているユーザーと出品しているユーザーが同一人物の場合と同一人物ではない場合で処理を分けましょう %>
  <% if user_signed_in? %>
    <% if current_user.id == @item.user_id %> 
    <%= 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_orders_path(@item.id) ,class:"item-red-btn" %> 
    <%# //商品が売れていない場合はこちらを表示しましょう %>
    <% end %>
    <% end %>

    <%# //ログインしているユーザーと出品しているユーザーが同一人物の場合と同一人物ではない場合で処理を分けましょう %>

    <div class="item-explain-box">
      <span><%= @item.describe %></span>
    </div>
    <table class="detail-table">
      <tbody>
        <tr>
          <th class="detail-item">出品者</th>
          <td class="detail-value"><%= @item.user.nickname %></td>
        </tr>
        <tr>
          <th class="detail-item">カテゴリー</th>
          <td class="detail-value"><%= @item.category.name %></td>
        </tr>
        <tr>
          <th class="detail-item">商品の状態</th>
          <td class="detail-value"><%= @item.condition.name %></td>
        </tr>
        <tr>
          <th class="detail-item">配送料の負担</th>
          <td class="detail-value"><%= @item.delivery_fee.name %></td>
        </tr>
        <tr>
          <th class="detail-item">発送元の地域</th>
          <td class="detail-value"><%= @item.prefecture.name %></td>
        </tr>
        <tr>
          <th class="detail-item">発送日の目安</th>
          <td class="detail-value"><%= @item.datetime.name %></td>
        </tr>
      </tbody>
    </table>
    <div class="option">
      <div class="favorite-btn">
        <%= image_tag "star.png" ,class:"favorite-star-icon" ,width:"20",height:"20"%>
        <span>お気に入り 0</span>
      </div>
      <div class="report-btn">
        <%= image_tag "flag.png" ,class:"report-flag-icon" ,width:"20",height:"20"%>
        <span>不適切な商品の通報</span>
      </div>
    </div>
  </div>
  <%# /商品の概要 %>

  <div class="comment-box">
    <form>
      <textarea class="comment-text"></textarea>
      <p class="comment-warn">
        相手のことを考え丁寧なコメントを心がけましょう。
        <br>
        不快な言葉遣いなどは利用制限や退会処分となることがあります。
      </p>
      <button type="submit" class="comment-btn">
        <%= image_tag "comment.png" ,class:"comment-flag-icon" ,width:"20",height:"25"%>
        <span>コメントする<span>
      </button>
    </form>
  </div>
  <div class="links">
    <a href="#" class="change-item-btn">
      < 前の商品
    </a>
    <a href="#" class="change-item-btn">
      後ろの商品 >
    </a>
  </div>
  <a href="#" class='another-item'><%= @item.category.name %>をもっと見る</a>
</div>

<%= render "shared/footer" %>

app/views/show.html.erbはitemコントローラで@itemを定義しているから、@item.orderで条件分岐する.

しかしapp/views/index.html.erbはitem.orderで定義している


<%= render "shared/header" %>
<div class='main'>

  <%# 画面上部の人生を変えるフリマアプリ帯部分 %>
  <div class='title-contents'>
    <h2 class='service-title'>
      人生を変えるフリマアプリ
    </h2>
    <p class='service-explain'>
      FURIMAはだれでもかんたんに出品・購入できる
    </p>
    <p class='service-explain'>
      フリマアプリです
    </p>
    <div class='store-btn'>
      <%= link_to image_tag("https://linkmaker.itunes.apple.com/ja-jp/badge-lrg.svg?releaseDate=2011-09-21&kind=iossoftware&bubble=ios_apps", class:"apple-btn"), "#" %>
      <%= link_to image_tag("dl-android.png", class:"google-btn"), "#" %>
    </div>
  </div>
  <%# /画面上部の人生を変えるフリマアプリ帯部分  %>

  <%# FURIMAが選ばれる3つの理由部分 %>
  <div class='select-reason-contents'>
    <h2 class='title'>
      FURIMAが選ばれる3つの理由
    </h2>
    <ul class='reason-lists'>
      <li class='list'>
        <%= image_tag "furima-intro01.png", class:"list-pict" %>
        <span class='reason-list-number'>1</span>
        <h3 class='reason-list-text'>
          <span class='reason-list-blue-text'>3分</span>
          ですぐに出品
        </h3>
        <p class='reason-list-description'>
          スマホで入力するだけで簡単に出品できる!
        </p>
      </li>
      <li class='list'>
        <%= image_tag "furima-intro02.png", class:"list-pict" %>
        <span class='reason-list-number'>2</span>
        <h3 class='reason-list-text'>
          <span class='reason-list-blue-text'>シンプル</span>
          で使いやすい
        </h3>
        <p class='reason-list-description'>
          めんどくさい入力は必要なく、検索も購入もスムーズ!
        </p>
      </li>
      <li class='list'>
        <%= image_tag "furima-intro03.png", class:"list-pict" %>
        <span class='reason-list-number'>3</span>
        <h3 class='reason-list-text'>
          手数料
          <span class='reason-list-blue-text'>業界最安</span>
        </h3>
        <p class='reason-list-description'>
          10%でお得に出品&購入!
        </p>
      </li>
    </ul>
  </div>
  <%# /FURIMAが選ばれる3つの理由部分 %>

  <%# 画面中央の会員数日本一位帯部分 %>
  <div class='ad-contents'>
    <h2 class='ad-title'>
      会員数日本一位
    </h2>
    <p class='ad-explain'>
      FURIMAは、フリマアプリで最も人気。
    </p>
    <p class='ad-explain'>
      出品・購入回数も業界最多です!
    </p>
    <p class='ad-explain'>
      ほしかったあの商品に出会えるかもしれません。
    </p>
    <div class='store-btn'>
      <%= link_to image_tag("https://linkmaker.itunes.apple.com/ja-jp/badge-lrg.svg?releaseDate=2011-09-21&kind=iossoftware&bubble=ios_apps", class:"apple-btn"), "#" %>
      <%= link_to image_tag("dl-android.png", class:"google-btn"), "#" %>
    </div>
  </div>
  <%# /画面中央の会員数日本一位帯部分 %>

  <%# FURIMAの特徴 %>
  <div class='feature-contents'>
    <h2 class='title'>
      FURIMAの特徴
    </h2>
    <ul class='feature-lists'>
      <li class='list'>
        <%= image_tag "furima-intro04.png", class:"list-pict" %>
        <h3 class='feature-list-text'>
          簡単に売り買いできる
        </h3>
        <p class='feature-list-description'>
          スマホひとつで、いつでもどこでも簡単に出品・購入が可能!
        </p>
      </li>
      <li class='list'>
        <%= image_tag "furima-intro05.png", class:"list-pict" %>
        <h3 class='feature-list-text'>
          売上金は即日振込みに対応
        </h3>
        <p class='feature-list-description'>
          午前9時までに振込を依頼いただければ、翌日に指定の口座に入金いたします。
        </p>
      </li>
      <li class='list'>
        <%= image_tag "furima-intro06.png", class:"list-pict" %>
        <h3 class='feature-list-text'>
          様々な支払いに対応
        </h3>
        <p class='feature-list-description'>
          お支払いは、クレジットカードだけでなく、ポイントや売上金など多彩な方法があります。
        </p>
      </li>
    </ul>
  </div>
  <%# /FURIMAの特徴 %>

  <%# 商品一覧 %>

  <div class='item-contents'>
    
    <h2 class='title'>ピックアップカテゴリー</h2>
    <%= link_to '新規投稿商品', "#", class: "subtitle" %>
    <ul class='item-lists'>

      <%# 商品のインスタンス変数になにか入っている場合中身のすべてを展開できるようにしましょう %>
      <% if  @items.present? %>
      <% @items.each do |item| %>
      <li class='list'>
        <%= link_to item_path(item.id) do %>
        <div class='item-img-content'>
          <%= image_tag item.image, class: "item-img" %>

          <%# 商品が売れていればsold outを表示しましょう %>
          <% if  item.order %>
          <div class='sold-out'>
            <span>Sold Out!!</span>
          </div>
          <% end %>
          <%# //商品が売れていればsold outを表示しましょう %>

        </div>
        <div class='item-info'>
          <h3 class='item-name'>
            <%= item.name %>
          </h3>
      
          <div class='item-price'>
            <span><%= item.price %><br><%= item.delivery_fee.name %></span>
            <div class='star-btn'>
              <%= image_tag "star.png", class:"star-icon" %>
              <span class='star-count'>0</span>
            </div>
          </div>
        </div>
      <% end %>
      </li>
    <% end %>
      <%# //商品のインスタンス変数になにか入っている場合中身のすべてを展開できるようにしましょう %>

      <%# 商品がない場合のダミー %>
      <%# 商品がある場合は表示されないようにしましょう %>
      <% else %>
      <li class='list'>
        <%= link_to '#' do %>
        <%= image_tag "https://s3-ap-northeast-1.amazonaws.com/mercarimaster/uploads/captured_image/content/10/a004.png", class: "item-img" %>
        <div class='item-info'>
          <h3 class='item-name'>
            商品を出品してね!
          </h3>
          <div class='item-price'>
            <span>99999999円<br>(税込み)</span>
            <div class='star-btn'>
              <%= image_tag "star.png", class:"star-icon" %>
              <span class='star-count'>0</span>
            </div>
          </div>
        </div>
        <% end %>
      </li>
      <% end %>
      <%# //商品がある場合は表示されないようにしましょう %>
      <%# /商品がない場合のダミー %>
    </ul>
  </div>
  <%# /商品一覧 %>
</div>
<%= link_to(new_item_path, class: 'purchase-btn') do %>
  <span class='purchase-btn-text'>出品する</span>
  <%= image_tag 'icon_camera.png' , size: '185x50' ,class: "purchase-btn-icon" %>
<% end %>
<%= render "shared/footer" %>

理由は簡単。each文でitemのブロック変数を定義していて、それをファイルの中で使うから

2
5
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
2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?