controller 最主要的工作是處理和回應客戶端的輸入和互動。
一段網址進來,routes 會帶你去對的地方
先找第一層:controller
再來找第二層:action
最後一層找到:id
延續昨天的例子,小明自己架了一個部落格網站,想把這個架設網站的過程寫成文章,所以他開啟網頁,連進網站https://mingblog.tw
新增一篇文章,網址如下:
黃色框框表示為 controller
,名為 articles
綠色框框表示為 action
,是一個 new
方法,寫在 articles_controller.rb
這個檔案中
透過網址可以知道要走哪一條路徑來操作資源,是不是很好懂呢?
寫沒多久,小明肚子餓了,想先把文章告一段落,送出文章後,就出門吃宵夜。吃飽喝足的小明突然想到還有個內容寫錯了,又趕緊打開文章列表,點擊剛剛的文章,並且進入編輯頁面去修改內容,網址如下:
因為還是對同樣的資源操作,所以還是對應到articles_controller.rb
,但是這次是走編輯畫面,所以用edit
這個 action
來執行,最重要的是 id
不能忘記!與剛剛新增的情況不同,因為新增前是還沒有存入資料庫的東西,因此不會有 id,一旦存入資料庫,才會產生流水編號 id。也因為你對某一篇文章要進行編輯,故必須要告訴資料庫,小明現在要更動的是 id 為 1 的文章。
文章可以新增 ( create )、讀取 ( read )、修改 ( edit )、刪除 ( destroy ),把握一個原則,當你要執行某個動作是需要針對某篇文章時,就要記得把 id 帶入。以下是 controller 基本設計。
# articles_controller.rb
class ArticlesController < ApplicationController
def index
# 可能文章列表頁、或你想讓使用者看到的第一畫面
end
def show
# 是單一文章的頁面、可以看到某篇文章的內容或留言
end
def new
# 這是一個新增文章的畫面
end
def create
# 這是一個動詞,會處理 new 畫面的表單,告訴 model 這要寫入資料庫
end
def edit
# 這是一個編輯文章的畫面
end
def update
# 這是一個動詞,會處理 edit 畫面的表單,告訴 model 這要寫入資料庫
end
def destroy
# 這是一個動詞,會進行刪除,告訴 model 這要從資料庫移除
end
end
參考資料:
https://dotblogs.com.tw/dog0416/2016/05/26/235802
學無止盡,每天都要進步一點點!