收集路线和成员路线在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]