發現很喜歡拿學生當例子,畢竟學生時期總是很希望趕快變成大人賺錢,做自己想做的事,現在只想回到學生身份,不為五斗米折腰的日子。人會長大,過去的已經回不去了,但是可以回憶...
憶當年才剛入學,除了系上的課,還有通識課要修滿學分,但是學校通識課不知道有哪些課可以選修,於是來到行政大樓,問了工讀生要去哪裡得到課程列表,他說到 3 樓學務處OO組就行了,而我也確實拿到列表。
時光飛逝,終於畢業了,拿到畢業證書的我希望可以終身學習,繼續使用圖書館的資源,所以我又來找工讀生詢問怎麼提出相關申請,他說要準備學生證到 2 樓校友中心的OO組申請校友證,因為要核對學號才能換發,之後就可以出示校友證進入圖書館。
故事中工讀生的角色就很像是 Route,告訴我應該要去幾樓找誰,而後順著指引的路徑取得我想要的資源。
昨天提到的資源就是在config/routes.rb
設定,而rails預設會長出 8 條路徑,路徑搭配 HTTP 動詞方法,可以達到你想要做的事,新增、讀取、編輯、刪除某篇文章、查看文章列表都可以。
# config/routes.rb
Rails.application.routes.draw do
resources :articles
end
上面的箭頭表示,相同的路徑使用不同的方法就可以操作資源。有些必須帶 ID 有些不用帶 ID,原因很簡單,像老師想查詢某個學生的成績,必須輸入該學生的學號,這個學號就是 ID,可以調出他個人的成績。而今天只是想看這個班級有哪些學生,不用輸入學號就看到整個列表。還有一個情況不需要 ID,還未入學的孩子就沒有學號,直到他一入學的那一瞬間才有學號可以查詢學生資料。也就是說在 create 前是沒有 ID 的,等到儲存的瞬間才會寫入資料庫,同時給這筆資料專屬的 ID。
不要懷疑,你沒有看錯,剛剛的小標是複數,這裡的小標是單數。
index
也就是列表頁:id
的路徑什麼時候會需要這樣的設計呢?
像是會員系統就不會使用到 id,因為你不會需要看到別人的資料,更不會編輯、刪除他人的檔案。(除非是最高權限者、管理員的角色)
# config/routes.rb
Rails.application.routes.draw do
resource :user
end
備註:
巢狀
設計,比方說網址 /user/1/articles
,表示 1 號使用者所有的文章!only
或 except
長出需要的路徑就好~member
(含有:id)collection
(不含:id)# config/routes.rb
Rails.application.routes.draw do
resources :article do
member do
get :favorites
post :favorites
# 因為不是 rails 預設的路徑,要記得加上 HTTP 動詞
end
end
end
參考資料:
為你自己學Ruby on Rails
學無止盡,每天都要進步一點點!