--- 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)