Rails 中的收集路线和成员路线有什么区别?
例如,
resources :photos do
member do
get :preview
end
end
相对
resources :photos do
collection do
get :search
end
end
我不明白。
成员路由将需要一个 ID,因为它作用于成员。集合路由不会,因为它作用于对象集合。预览是成员路由的一个示例,因为它作用于(并显示)单个对象。搜索是集合路径的一个示例,因为它作用于(并显示)对象集合。
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)
search_photos_path
而不是 search_photos_url
,这样人们就不会认为 _path
和 _url
是两者之间的区别。
西奥的答案是正确的。为了文档的缘故,我还想指出,这两者将生成不同的路径助手。
member {get 'preview'}
将生成:
preview_photo_path(@photo) # /photos/1/preview
collection {get 'search'}
将生成:
search_photos_path # /photos/search
注意复数!
1) :collection - 为对集合进行操作的其他操作添加命名路由。采用 #{action} => #{method}
的散列,其中 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]
不定期副业成功案例分享