nev*_*ame 272 ruby ruby-on-rails
Rails中的收集路由和成员路由有什么区别?
例如,
resources :photos do
member do
get :preview
end
end
Run Code Online (Sandbox Code Playgroud)
与
resources :photos do
collection do
get :search
end
end
Run Code Online (Sandbox Code Playgroud)
我不明白.
The*_*heo 397
成员路由将需要ID,因为它作用于成员.收集路由不是因为它作用于对象集合.预览是成员路由的示例,因为它作用于(并显示)单个对象.搜索是一个收集路由的示例,因为它作用于(并显示)一组对象.
Ami*_*tel 211
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)
Run Code Online (Sandbox Code Playgroud)
tyb*_*103 31
西奥的答案是对的.为了文档的缘故,我还要注意这两个将生成不同的路径助手.
member {get 'preview'} 会产生:
preview_photo_path(@photo) # /photos/1/preview
Run Code Online (Sandbox Code Playgroud)
collection {get 'search'} 会产生:
search_photos_path # /photos/search
Run Code Online (Sandbox Code Playgroud)
注意多个!
Bee*_*tty 13
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]