RESTful風(fēng)格的路由動(dòng)詞默認(rèn)有7個(gè)(分別為:index, show, create, new, edit, update, destroy)。有時(shí)我們需要自定義路由,這時(shí)就要用到:on參數(shù)。:on參數(shù)有三種取值,分別為collection,member,new。
如果想添加一個(gè)member方式的路由,可以這樣:
復(fù)制代碼 代碼如下:
resources :photos do
member do
get 'preview'
end
end
將會(huì)添加一個(gè)路由:GET請(qǐng)求/photos/1/preview路由到PhotosController的preview action,同時(shí)也會(huì)新建preview_photo_url 和 preview_photo_path這兩個(gè)helpers。
上面的member block中可以添加很多條記錄。如果只有一條,一般會(huì)這樣寫:
復(fù)制代碼 代碼如下:
resources :photos do
get 'preview',n => :member
end
下面總結(jié)一下member,new,collection的區(qū)別:
:member 是對(duì)單個(gè)實(shí)體進(jìn)行操作,創(chuàng)建路由格式是: /:controller/:id/:your_method
:collection 是對(duì)實(shí)體集合進(jìn)行操作,創(chuàng)建路由格式是: /:controller/:your_method
:new 是新建一個(gè)實(shí)體,創(chuàng)建路由格式是: /:controller/:your_method/new
舉例如下:
復(fù)制代碼 代碼如下:
map.resources :users, :collection => { :rss => :get }
map.resources :users, :member => { :profile => :get }
map.resources :users, :new => { :draft => :get }
第一行創(chuàng)建的路由是:/users/rss
第二行創(chuàng)建的路由是:/users/1/profile
“1”就是user_id,我們需要知道用戶ID才能得到用戶的profile.
第三行創(chuàng)建的路由是:/users/new/draft