ruby on rails - rails - ¿Cuál es la diferencia entre la ruta de recolección y la ruta de miembros en Ruby sobre rieles?
routes ruby on rails (4)
1) : colección : agregue rutas con nombre para otras acciones que operan en la colección. Toma un hash de #{action} => #{method}
, donde el método es :get/:post/:put/:delete
, una matriz de cualquiera de los anteriores, o: any 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]
¿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.
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
Note la pluralidad!
Una ruta de miembro requerirá una identificación, ya que actúa sobre un miembro . Una ruta de recolección no lo hace porque actúa sobre una colección de objetos. La vista previa es un ejemplo de una ruta de miembro, porque actúa (y muestra) un solo objeto. La búsqueda es un ejemplo de una ruta de recolecció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)