Rails用這套慣例來大大簡化了路由設定。那程式該怎麼寫呢? 我們在config/routes.rb加入以下一行程式:
resources :events
如此就會自動建立四個命名路由(named routes),搭配四個HTTP動詞,對應到七個Actions。它的實際作用,就如同以下的設定:
get '/events' => "events#index", :as => "events"
post '/events' => "events#create", :as => "events"
get '/events/:id' => "events#show", :as => "event"
put '/events/:id' => "events#update", :as => "event"
delete '/events/:id' => "events#destroy", :as => "event"
get '/events/new' => "events#new", :as => "new_event"
get '/events/:id/edit' => "events#edit", :as => "edit_event"
用這張表格會更清楚:
Helper | GET | POST | PUT | DELETE | |
---|---|---|---|---|---|
event_path(@event) | /events/1 show action |
/events/1 update action |
/events/1 destroy action |
||
events_path | /events index action |
/events create action |
|||
edit_event_path(@event) | /events/1/edit edit action |
||||
new_event_path | /events/new new action |
注意到這七個Action方法的名字,Rails是定好的,無法修改。這一套慣例建議你背起來,你可以這樣記憶:
- show、new、edit、update、destroy是單數,對單一元素操作
- index、create是複數,對群集操作
event_path(@event)
需要參數,根據HTTP動詞決定show、update、destroyevents_path
毋需參數,根據HTTP動詞決定index、create