---
# System prepended metadata

title: 12th 鐵人賽 Day_05 routes?
tags: [12th 鐵人賽]

---

---
title: 12th 鐵人賽 Day_05 routes?
tags: 12th 鐵人賽
--- 
# 12th 鐵人賽 Day_05 routes?
嗨！各位朋友大家好，打給後，歹嘎吼，胎尬喉，我是阿圓，今天終於要動工我的部落格了！跟之前一樣，來一張索隆當開場！
![](https://i.imgur.com/blMy8MW.jpg)
(路徑沒有設定好，可是會像索隆一樣迷路的！)

建立專案後，先來決定我們的routes，才能正確找到相對應的controller，在試寫的時候，默默的疑問就冒出來了：
1. 單數複數的resources & resource??
2. collection & member & shallow???
這一些到底有什麼差別呢？

## resource & resources
首先先來講resource & resources
比較一下寫上resources 跟 resource 的路徑差別(以user為例)

#### 複數resources
![](https://i.imgur.com/kWQML4C.png)

#### 單數 resource
![](https://i.imgur.com/6EMMO2z.png)

仔細觀察一下再來總結差別，會發現：
複數resources會建立出八條路徑對應到七個action，單數resource只有七條路徑，對應到六個action(少了action)，其中單數resource建立出的路徑是不含ID的。

至於使用時機的話，下面會講到。

#### 層狀routes
若我今天想要看到2號user的profile，這個時候會發現，若想看到profile，一定要先指定user是誰的，不然我單純連一個profile，總不能隨機抽一個user的profile給我看吧，所以我的路徑應該長這樣`/users/2/profile`

這個時候可以用層狀routes的方式處理：
```ruby=
resources :users do
  resources :profiles
end
```
休但幾勒！這樣子產生的網址好像可能產出`/users/2/profile/2`
![](https://i.imgur.com/JDf3wgu.jpg)

user怎麼會有第二個 profile 呢?
所以我們是不需要長出有 profile id 的路徑的
所以把profile改成單數resource
```ruby=
resources :users do
  resource :profile
end
```
這樣路徑就只會有`/users/2/profile`了:+1::+1::+1::+1: 


那我如果不想要預設的路徑呢？這個就等到明天來解答吧～
明天來講講collection & member & shallow

感謝各位看到這邊，若有任何建議，請各位不吝指教！我們明天見！
![](https://i.imgur.com/PPbpd2b.gif)












