¿Cuál es la diferencia entre las rutas de recolección y las rutas de miembros en Rails?
Por ejemplo,
resources :photos do
member do
get :preview
end
end
versus
resources :photos do
collection do
get :search
end
end
No entiendo.
¿Cuál es la diferencia entre las rutas de recolección y las rutas de miembros en Rails?
Por ejemplo,
resources :photos do
member do
get :preview
end
end
versus
resources :photos do
collection do
get :search
end
end
No entiendo.
Respuestas:
Una ruta de miembro requerirá una identificación, porque actúa sobre un miembro . Una ruta de colección no lo hace porque actúa sobre una colección de objetos. La vista previa es un ejemplo de una ruta miembro, porque actúa (y muestra) un solo objeto. La búsqueda es un ejemplo de una ruta de colección, porque actúa (y muestra) una colección de objetos.
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_pathlugar de search_photos_urlpara que las personas no piensen _pathy _urlsean una diferencia entre los dos.
La respuesta de Theo es correcta. Por el bien de la documentación, me gustaría señalar también que los dos generarán diferentes ayudantes de ruta.
member {get 'preview'} Generará:
preview_photo_path(@photo) # /photos/1/preview
collection {get 'search'} Generará:
search_photos_path # /photos/search
Tenga en cuenta la pluralidad!
1) : colección - Agregue rutas con nombre para otras acciones que operan en la colección. Toma un hash de #{action} => #{method}, donde método es :get/:post/:put/:delete, una matriz de cualquiera de los anteriores, o: cualquiera si el método no importa. Estas rutas se asignan a una URL como / users / customers_list , con una ruta de customers_list_users_url .
map.resources: users,: collection => {: customers_list =>: get}
2) :member- Igual que :collection, pero para acciones que operan en un miembro específico.
map.resources: users,: member => {: inactive =>: post}
se trató como /users/1;inactive=> [:action => 'inactive', :id => 1]