Skip to content

Instantly share code, notes, and snippets.

@zavakid
Created January 7, 2012 08:39
Show Gist options
  • Save zavakid/1574212 to your computer and use it in GitHub Desktop.
Save zavakid/1574212 to your computer and use it in GitHub Desktop.
rails resource control and path

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是定好的,無法修改。這一套慣例建議你背起來,你可以這樣記憶:

  • showneweditupdatedestroy是單數,對單一元素操作
  • indexcreate是複數,對群集操作
  • event_path(@event)需要參數,根據HTTP動詞決定showupdatedestroy
  • events_path毋需參數,根據HTTP動詞決定indexcreate

from http://ihower.tw/rails3/restful.html

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment