收集路线和成员路线在ruby上的区别?

Rails中收集路线和成员路线有什么区别?

例如,

resources :photos do member do get :preview end end 

 resources :photos do collection do get :search end end 

我不明白。

成员路由将需要一个ID,因为它作用于成员 。 集合路由不会因为它作用于一组对象。 预览是成员路由的一个例子,因为它作用于(并显示)单个对象。 search是一个集合路由的例子,因为它作用于(并显示)一组对象。

  URL Helper Description ---------------------------------------------------------------------------------------------------------------------------------- member /photos/1/preview preview_photo_path(photo) Acts on a specific resource so required id (preview specific photo) collection /photos/search search_photos_path Acts on collection of resources(display all photos) 

泰奥的回答是正确的。 为了文档的缘故,我也想注意到两者会产生不同的path助手。

member {get 'preview'}将生成:

 preview_photo_path(@photo) # /photos/1/preview 

collection {get 'search'}将生成:

 search_photos_path # /photos/search 

注意多个!

1) :collection – 为在集合上操作的其他操作添加命名路由。 采取#{action} => #{method}的散列,其中方法是:get/:post/:put/:delete ,前面任何一个的数组,或者:any如果方法不重要。 这些路由映射到像/ users / customers_list这样的URL,其路线为customers_list_users_url

map.resources:users,:collection => {:customers_list =>:get}

2) :member – 与:collection相同,但对于在特定成员上操作的操作。

map.resources:users,:member => {:inactive =>:post}

它被当作/users/1;inactive=> [:action => 'inactive', :id => 1]