Update(2006/12/4): 一些小修改跟 link_to 的 web accessibility 補充。
Update(2006/12/11): 請接著看系列文章下一集: Rails RESTful 相關工具。
Rails RESTful 系 列 彈第三篇,我想 David Heinemeier Hansson 的這篇投影片是很好的開場白: Discovering a world of Resources on Rails
本來這篇想寫的仔細點,不過後來我發現AWDwR第二版講 Resource-Based Routing 的頁數還不少(十幾頁吧,還蠻詳細的),要用 Rails 的人應該都去買一本,我想我這裡就不巨細靡遺了… :p
在 Rails 中是如何實作 RESTful 支援的? 首先是在 Resource Routes 上,在 routes.rb 加入
map.resources :users
這樣的宣告將在自動對應 URL路徑跟 Controller 的 action ,而有以下的結果 :
GET: /users => [:action => ‘index’]
GET: /users.xml => [:action => ‘index’, :format => ‘xml’]
GET: /users/1 => [:action => ‘show’, :id => 1]
GET: /users/1;edit => [:action => ‘edit’, :id => 1]
GET: /users/1.xml => [:action => ‘show’, :id => 1, :format => ‘xml’]
POST: /users => [:action => ‘create’]
PUT: /users/1 => [:action => ‘update’, :id => 1]
DELETE: /users/1 => [:action => ‘destroy’, :id => 1]
也就是使用 named routes 來實作出 verb-oriented controllers,單一個 resource 根據 HTTP verb 而有不同的行為。 閱讀全文〈Rails RESTful 實作〉