Quelle est la différence entre les itinéraires de collecte et les itinéraires des membres dans Rails?
Par exemple,
resources :photos do
member do
get :preview
end
end
versus
resources :photos do
collection do
get :search
end
end
Je ne comprends pas.
Un itinéraire membre nécessitera un ID, car il agit sur un membre. Une route de collection ne fonctionne pas car elle agit sur une collection d'objets. L'aperçu est un exemple d'itinéraire de membre, car il agit sur (et affiche) un seul objet. La recherche est un exemple d'itinéraire de collection, car elle agit sur (et affiche) une collection d'objets.
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)
La réponse de Theo est correcte. Pour des raisons de documentation, j'aimerais également noter que les deux généreront des aides de chemin différents.
member {get 'preview'}
va générer:
preview_photo_path(@photo) # /photos/1/preview
collection {get 'search'}
va générer:
search_photos_path # /photos/search
Notez la pluralité!
1) : collection - Ajouter des itinéraires nommés pour d’autres actions opérant sur la collection. Prend un hachage de #{action} => #{method}
, où méthode est :get/:post/:put/:delete
, un tableau de l'un des éléments précédents ou de: any si la méthode n'a pas d'importance. Ces itinéraires mappent vers une URL telle que / users/customers_list, avec un itinéraire de customers_list_users_url.
map.resources: utilisateurs,: collection => {: customers_list =>: get}
2) :member
- Identique à :collection
, mais pour les actions qui agissent sur un membre spécifique.
map.resources: utilisateurs,: membre => {: inactive =>: post}
il a traité comme /users/1;inactive=> [:action => 'inactive', :id => 1]