Разница между маршрутом сбора и маршрутом члена в ruby ​​на рельсах? - PullRequest
269 голосов
/ 12 июня 2010

В чем разница между маршрутами сбора и маршрутами участников в Rails?

Например,

resources :photos do
  member do
    get :preview
  end
end

против

resources :photos do
  collection do
    get :search
  end
end

Я не понимаю.

Ответы [ 4 ]

393 голосов
/ 12 июня 2010

Маршруту участника потребуется идентификатор, поскольку он действует на участника . Маршрут коллекции не потому, что он действует на коллекцию объектов. Предварительный просмотр является примером маршрута участника, поскольку он действует (и отображает) один объект. Поиск является примером маршрута коллекции, поскольку он действует (и отображает) коллекцию объектов.

201 голосов
/ 25 июля 2012
                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)
30 голосов
/ 09 июля 2012

Тео ответ правильный.Ради документации, я хотел бы также отметить, что эти два сгенерируют разные помощники пути.

search_photos_path # /photos/search

Обратите внимание на множественность!

13 голосов
/ 10 января 2012

1) : коллекция - добавить именованные маршруты для других действий, которые работают с коллекцией.Принимает хеш #{action} => #{method}, где метод равен :get/:post/:put/:delete, массив любого из предыдущих или: any, если метод не имеет значения.Эти маршруты отображаются на URL-адрес, например / users / Customers_list , с маршрутом Customers_list_users_url .

map.resources: users,: collection => {: customer_list =>: get}

2) :member - То же, что и :collection, но для действий, которые работают с конкретным членом.

map.resources: users,: member => {: inactive =>: post}

рассматривается как /users/1;inactive=> [:action => 'inactive', :id => 1]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...