iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 8
0
自我挑戰組

Ruby and Rails 的二三事系列 第 8

Ruby on Rails 的二三事 - Day08 Rails (Routes 和 MVC)

  • 分享至 

  • xImage
  •  

花了點時間,總算是把 Ruby 的一些觀念稍微的介紹了一下,
接下來換要進入Rails 的部分囉!

什麼是Rails

Rails 是一款用Ruby這個程式語言所編寫出來,開源Web的應用框架。

主要的設計理念是DRY(Don't Repeat Yourself)和
COC(Convention Over Configuration)。


Routes 和 MVC

這邊借用一下為你自己學Ruby on Rails的圖來說明:

可以看出,整個 Rails 的架構由四個部分組成:


Routes

Rails 裡的Routes 採用的是RESTful的風格,將網址 (URI)視為是一種resources。

一般我們會在Rails 專案裡的 config/routes.rb寫下類似這樣的東西:

# config/routes.rb
resources :products

然後, rails 就會自動幫你長出下面這些路徑

其中,Verb 指的是HTTP請求的方法,可分為:

  • GET: 讀取資源
  • POST: 新增資源
  • PATCH/PUT: 更新資源部份內容/替換資源
  • DELETE: 刪除資源

Controller

有看到上面那張圖,最右邊有一排Controller#Action。
Rails透過URI和不同的Verb(HTTP請求方法),對應到8個不同的方法(Action)。
通常在檔案裡他會比較像是這樣:

# catrs_controller.rb
class CartsController < ApplicationController

  
end

Controller 檔名和檔案裡的類別名稱是相關的,像上面的例子:
檔名是: carts_controller
類別名稱是:CartsController


Model

在Rails裡,是透過Model來對資料庫進行操作的,讓你可以簡單的功能上,可以不用寫SQL語法,就可以從資料庫取得資料。

# cat.rb
class Cat < ApplicationRecord
  
end

Model的名稱和資料表,這也遵循著Rails的慣例:

Model類別 檔案名稱 資料表
Cat cat.rb cats
Post post.rb posts

View

在Rails裡View的存放位置也有個慣例:
舉例來說:跟 CatsController 相關的 View,就會放在 app/views/cats 裡。如果執行的是 CatsController 的 index Action,預設會去找 app/views/cats/index.html.erb 這個檔案。

檔案名最後面的 erb 是 Embedded Ruby 的縮寫;
意思是,你可在在裡面寫 Ruby的語法,
然後會再透過Ruby預設的ERB library,幫你編譯成HTML語法。


Routes + MVC

再看一次上面那張圖:

我們可以將他解釋成:

  1. 瀏覽器依據資源(resources)的設定,經由Route去找到Controller中,對應的action(method)。
  2. 視需要透過Model向資料庫取得資料後,處理完再與對應的View(.html.erb)做結合。
  3. View處理完後再回傳給Controller,Controller再將結果轉交給瀏覽器。

這就是,Routes 和 MVC的基本概念,有錯還請不吝指教。

鐵人賽,我們明天見!

參考資料:
為你自己學Ruby on Rails


上一篇
Ruby and Rails 的二三事 - Day07 Ruby 中的 self 到底是?
下一篇
Ruby on Rails 的二三事 - Day09 REST 和 RESTful
系列文
Ruby and Rails 的二三事19
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言