Ruby on Rails 初學入門(3) - Scaffold 的 CRUD 程式流程

要感受 Ruby on Rails 的快速, 由 Scaffold 來學習/修改會是比較快的方法, 所以先看 Scaffold 產生的程式流程是怎麼跑的.

RoR REST 與 HTTP 標準協定對應

首先要先了解 RoR controller 是REST實作:(下面是 CRUD 與 REST 的對照)

  • CREATE = POST: 新增資料
  • READ = GET: 取得資料
  • UPDATE = PUT: 更新資料
  • DELETE = DELETE: 刪除資料

Scaffold Controller Function 列表

Scaffold 產生於 Controller 的 function 有 7 個: (routes => map.resources :posts)

  • show: 處理單一資料的 GET request, ex: http://domain/posts/1, routes: GET /posts/:id
  • create: 處理 POST request, 並將建立新的一筆資料, ex: http://domain/posts, routes: POST /posts
  • update: 處理 PUT request, 並將指定的資料做更新, ex: http://domain/posts/1, routes: PUT /posts/:id
  • destroy: 處理 DELETE request, 清除此筆資料紀錄, ex: http://domain/posts/1, routes: DELETE /posts/:id
  • index: 秀出目前所有資料, http://domain/, routes: GET /
  • new: 建立新資料用的欄位頁面, 送出會執行 create 功能, ex: http://domain/posts/new, routes: GET /posts/new
  • edit: 取得並列出指定資料以供修改用, 送出會執行 update 功能, ex: http://domain/posts/1/edit, routes: GET /posts/:id/edit
  • 註: Controller 每個 function 都等於是一個頁面.

Scaffold 產生 CRUD 的運作流程

通常網頁程式的 Form 的寫法是 透過 GET/POST 將資料送到 處理/檢查頁面, 若有錯誤直接把錯誤訊息秀出, 再將原先 Form 的內容頁 load 出來/或者導回原本秀 Form 的頁面, 讓 User 再次輸入資料, 新增/修改 完成後, 再導到完成頁.

在此把 Scaffold 產生出來頁面的處理流程: (都由首頁出發)

  • Index -> New -> Create(Action) -> Index
  • Index -> Show -> Edit -> Update(Action) -> Index
  • Index -> Edit -> Update(Action) -> Index
  • Index -> Destroy(Action) -> Index
  • 註: 標 Action 的, 都沒有 View 的 HTML 頁面, 都是透過這幾個 Controller 的 function 來處理資料(處理資料於檢查/寫入 DB 等是 Model 負責), 這些 Action 都沒有頁面, 都是處理完成就導到完成頁, 處理/檢查失敗則會把原本上一個產生 Form 的頁面 load 進來(網址會是 Action 的頁面網址), 可參考下圖.

RoR Scaffold 頁面 CRUD 處理流程

在此附上此圖的 dia 原始檔(之後所有圖檔都會擺在這個檔案裡面.), 若覺得這樣子 畫不對 或者 圖/線 用的不好, 願意幫我改的話, 請自行下載修改, 再讓我更新圖片. 謝謝.

關於 Rails 的架構, 可另外參見此圖: (取自: Ruby on Rails (ROR))

Rails 架構圖

相關文章

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料