iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 5
0
自我挑戰組

Ruby on Rails 新手的30個問題!系列 第 5

Day_05 routes?

嗨!各位朋友大家好,打給後,歹嘎吼,胎尬喉,我是阿圓,專案越來越接近動工的時間了!跟之前一樣,來一張索隆當開場!

(路徑沒有設定好,可是會像索隆一樣迷路的!)

建立專案後,先來決定我們的routes,才能正確找到相對應的controller,在試寫的時候,默默的疑問就冒出來了:

  1. 單數複數的resources & resource??
  2. collection & member & shallow??
    這一些到底有什麼差別呢?

resource & resources

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

複數resources

單數 resource

仔細觀察一下再來總結差別,會發現:

  1. 複數resources會建立出八條路徑對應到七個action。
  2. 單數resource只有七條路徑,對應到六個action(少了index action),其中單數resource建立出的路徑是不含ID的。

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

層狀routes

如果我今天想要看到2號user的profile呢?路徑該怎麼設計?
這個時候會發現,若想看到profile,一定要先指定出這是哪個user的,不然網址單純打一個profile,總不能隨機抽一個user的profile給我看吧XD,所以我的路徑應該長這樣/users/2/profile

這個時候可以用層狀routes的方式處理:

resources :users do
  resources :profiles
end

休但幾勒!這樣子產生的網址好像可能產出/users/2/profile/2

user怎麼會有第二個 profile 呢?
所以我們是不需要長出有 profile id 的路徑的,讓我們把profile改成單數resource:

resources :users do
  resource :profile
end

這樣路徑就只會有/users/2/profilehttps://ithelp.ithome.com.tw/upload/images/20200912/20129191EFsqRNOQxo.png

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

感謝各位看到這邊,若有任何建議,請各位不吝指教!我們明天見!


上一篇
Day_04 MVC架構?(2)
下一篇
Day_06 routes? (2)
系列文
Ruby on Rails 新手的30個問題!30

尚未有邦友留言

立即登入留言