RESTful風(fēng)格的路由動詞默認(rèn)有7個(分別為:index, show, create, new, edit, update, destroy)。有時我們需要自定義路由,這時就要用到:on參數(shù)。:on參數(shù)有三種取值,分別為collection,member,new。
如果想添加一個member方式的路由,可以這樣:
復(fù)制代碼 代碼如下:
resources :photos do
member do
get 'preview'
end
end
將會添加一個路由:GET請求/photos/1/preview路由到PhotosController的preview action,同時也會新建preview_photo_url 和 preview_photo_path這兩個helpers。
上面的member block中可以添加很多條記錄。如果只有一條,一般會這樣寫:
復(fù)制代碼 代碼如下:
resources :photos do
get 'preview',n => :member
end
下面總結(jié)一下member,new,collection的區(qū)別:
:member 是對單個實體進(jìn)行操作,創(chuàng)建路由格式是: /:controller/:id/:your_method
:collection 是對實體集合進(jìn)行操作,創(chuàng)建路由格式是: /:controller/:your_method
:new 是新建一個實體,創(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