使用資源路由時會產生七種特定的路由,但在實際過程中我們有時候需要一些自定義的方法,這時候就可以使用on參數,他有三個取值:new ,member,colection
:member 是對單個實體進行操作,創建路由格式是: /:controller/:id/:your_method
:collection 是對實體集合進行操作,創建路由格式是: /:controller/:your_method
:new 是新建一個實體,創建路由格式是: /:controller/:your_method/new
:member 是對單個實體進行操作,創建路由格式是: /:controller/:id/:your_method
:collection 是對實體集合進行操作,創建路由格式是: /:controller/:your_method
:new 是新建一個實體,創建路由格式是: /:controller/:your_method/new
例如:
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中可以添加很多條記錄。如果只有一條,一般會這樣寫:
resources :photos do
get 'preview',n => :member
end
Rails.application.routes.draw do
resources :orders do
post :confirm, on: :member
delete :cancel, on: :member
end
end
Rails.application.routes.draw do
resources :orders do
member do
post :confirm
delete :cancel
end
end
end
Rails.application.routes.draw do
resources :orders do
get :cancelled, on: :collection
end
end
esources :orders do
post :confirm, on: :member
delete :cancel, on: :member
end
member do
post :confirm
delete :cancel
end