---
# System prepended metadata

title: 使用格線以及卡片
tags: [Ruby]

---


###### tags: `Ruby`

[TOC]

## Github issue
![](https://i.imgur.com/0eO18At.png)
可以預定要做的事


## CDN (Content Delivery Network)
<link to  , href= ".....">


## 確認套件
![](https://i.imgur.com/hd0PVIr.png)

## 引入
node_module裡的bootstrap裡的

# 使用格線以及卡片
![](https://i.imgur.com/zJjLiWC.png)
重複的寫在layout
![](https://i.imgur.com/M629u10.png)

![](https://i.imgur.com/GqXJ8hZ.png)

## 餐點軟刪除
![](https://i.imgur.com/RPptdme.png)
g 一個migration
![](https://i.imgur.com/FvFJsY6.png)
![](https://i.imgur.com/fBLZcII.png)

### scope(常用!!)
![](https://i.imgur.com/LR5kTzK.png)
在item.rb寫上這行
![](https://i.imgur.com/m2DlYZb.png)
就可以在controller裡用available代替where......這段囉

```default_scope { where(deleted_at: nil) }```
![](https://i.imgur.com/h74pTVV.png)
換成這行其餘要改的地方都可以維持原樣不用改

![](https://i.imgur.com/mw75AGK.png)
要解除它可以這樣

### 修code
![](https://i.imgur.com/KkWHzLw.png)
![](https://i.imgur.com/Jknn3JZ.png)
為了用destory代替update......
在item.rb自己定義destory!

## scope vs def
scope出來的事類別方法 def 事實體方法 若要使用def必須
``` def self.xxxxx```
一般若是只需要寫一行就用scope若是要寫很多行用def效果其實相同

**在controller 裡若是看到很多where.xxxxxx 不太好
其實可以用scope 把他藏起來**

## flash 明顯化
套bootstrap的alert
把原本在navbar裡的flash[:notice刪調]
![](https://i.imgur.com/MsAc2Ao.png)

![](https://i.imgur.com/9EmrhLk.png)
新增檔案 _xxxx.html.erb 在shared裡

# 購物車
![](https://i.imgur.com/KcICymF.png)

接著在終端機輸入 
```rails rspec:install```
接著做一個rspec model
```rails g rspec modle Cart```

![](https://i.imgur.com/o5RUQvr.png)
就回有這些檔案
![](https://i.imgur.com/YB2tykR.png)
提醒你什麼沒做後面內容可以自訂

### 開始寫測試
![](https://i.imgur.com/S2ancvY.png)
AAA原則
先假設功能錯了在慢慢改

![](https://i.imgur.com/lAJ7xkf.png)
這樣寫每次使用add_item都會重置@items

![](https://i.imgur.com/FYW6wzd.png)

![](https://i.imgur.com/JLXuqzs.png)
可以只測試某一個


