管理者　商品詳細ページ

### :star2: 管理者の商品詳細ページの作成
bootstrap導入済　
namespases使用
_________
### :shamrock:コントローラー作成
アイテムを一つ取得して@item に格納
 ```admin/items_controller.rb
ef show
    @item = Item.find(params[:id])
  end
```

### :shamrock: views 詳細ページ作成
```erb:abmin/items/show.html.erb
<div class="container">
  <h2 class="text-center my-5">商品詳細</h2>
  <div class="row justify-content-center">
    <div class="col-md-6">
      <div style="padding-left:20%;">
        <%= image_tag url_for(@item.image), class: 'img-fluid', style: 'width: 65%;' %>
      </div>
    </div>
    <div class="col-md-6">
      <p class="my-4"><strong>商品名 </strong><span style="margin-left:150px;"><%= @item.name %></span></p>
      <p class="my-4"><strong>商品説明 </strong><span style="margin-left:135px;"><%= @item.description %></span></p>
      <p class="my-4"><strong>税込価格（税抜価格） </strong><span style="margin-left:40px;"><%= number_with_delimiter((@item.price * 1.1).round) %>円 ( <%= number_with_delimiter(@item.price) %>円 )</span></p>
      <p class="my-4"><strong>販売ステータス </strong><span style="margin-left:90px; color:green;"><%= @item.on_sale? ? '販売中' : '販売停止中' %></span></p>
      <%= link_to '編集する', edit_admin_item_path(@item), class: 'btn btn-success' %>
    </div>
  </div>
</div>
```
:star:**div class="container** 
ページ全体を包むコンテナで、Bootstrapのクラスを利用しています。
:star:**class="text-center my-5"** 
見出しのテキスト（"商品詳細"）を中央に配置し（text-center）、上下のマージンを設定（my-5）しています。

:star:商品の画像と詳細情報（名前、説明、価格、ステータス）は２つのカラム（**col-md-6**）に分けて表示されます。このカラムはBootstrapのグリッドシステムを利用しています。

:star:**<%= image_tag url_for(@item.image), class: 'img-fluid', style: 'width: 65%;' %>**
 商品画像を表示します。画像は65%の幅で表示し、img-fluid クラスによってレスポンシブ対応になります。

:star:商品詳細情報（名前、説明、価格、ステータス）は p タグ内に表示されます。<%= @item.name %> のように、@item オブジェクトの属性をERBタグを使用して表示しています。これにより、対応する商品の情報が動的に表示されます。

:star:価格については、**number_with_delimiter** メソッドを用いて3桁ごとにカンマを挿入し、見やすくしています。

:star:販売ステータス は **@item.on_sale?** メソッドで状態を確認し、結果に応じて '販売中' または '販売停止中' を表示しています。
_____
### :cherry_blossom: 補足
:star:**ステータスの'販売中' を選択をしているのに '販売停止中'の表示になってしまう**
（@item.on_sale?）を指定しているにもかかわらず判定されていない

現在のCreateItemsマイグレーションでは、itemsテーブルにname, description, price, is_active, そしてtimestampsの5つのカラムが存在するように作られています。しかし、これにはstatusというカラムが含まれていません。

ですので、以下のように**statusカラム**を作成します。
```diff_ruby
 create_table "items", force: :cascade do |t|
    t.string "name", null: false
    t.text "description", null: false
    t.integer "price", null: false
    t.boolean "is_active", default: true, null: false
    t.datetime "created_at", precision: 6, null: false
    t.datetime "updated_at", precision: 6, null: false
+   t.integer "status", default: 0
  end
```

一方、Itemモデルではstatusという名前のenumが定義されています。enumは一連のシンボル（今回の場合はon_saleとoff_sale）を整数にマッピングします。Railsはこれらのシンボルを使用して便利なメソッド（on_sale?, off_sale?など）を生成します。ただし、これらのenumはstatusという名前のカラムに依存しているため、そのカラムがテーブルに存在していなければ、正しく機能しません。

ですから、まずはitemsテーブルにstatusというカラムを追加する必要があります。これを行うために新しいマイグレーションファイルを作成します。
```
rails generate migration AddStatusToItems status:integer
```
マイグレーションファイルは以下のようになります。
```diff_ruby
class AddStatusToItems < ActiveRecord::Migration[6.1]
  def change
    add_column :items, :status, :integer, default: 0
  end
end
```
:star:これはitemsテーブルにstatusという名前のinteger型のカラムを追加し、そのデフォルト値を0に設定するというマイグレーションです。
```
rails db:migrate
```
:dango:　完成イメージ
![スクリーンショット 2023-07-19 23.09.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3492906/0dea7b0b-5782-18ec-b3f9-6a62488dea68.png)