Rails中的集合路线和成员路线之间有什么区别?
例如,
resources :photos do
member do
get :preview
end
end
与
resources :photos do
collection do
get :search
end
end
我不明白
Rails中的集合路线和成员路线之间有什么区别?
例如,
resources :photos do
member do
get :preview
end
end
与
resources :photos do
collection do
get :search
end
end
我不明白
Answers:
成员路由将需要一个ID,因为它作用于member。集合路由不是因为它作用于对象集合。预览是成员路线的示例,因为它作用于(并显示)单个对象。搜索是收集路径的一个示例,因为它作用于(并显示)对象集合。
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
并且两者之间是有区别的。
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]