Разница между ресурсами и ресурсами в маршрутизации рельсов?

какая разница между resource и resources в маршрутизации rails

 resource :geocoder

и

 resources :posts

Какова реальная разница между ними?

Ответ 1

В сущности, ресурсы маршрутизации - это когда ресурсы дают возможности действий контроллеру.

http://guides.rubyonrails.org/routing.html#specifying-a-controller-to-use

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

Итак, если у меня есть коллекция яблок, чтобы получить конкретное яблоко, я должен сказать маршрутизатору "Яблоки", какое яблоко получить, отправив идентификатор яблока. Если у меня уже есть один Apple, тогда идентификатор не нужен.

Обратите внимание на различия между ними, посмотрев, какие действия (или маршруты) у них есть:

  • ресурсы: Индекс, новый, создавать, показывать, редактировать, обновлять, уничтожать
  • ресурс: новый, создавать, показывать, редактировать, обновлять, уничтожать

В вашем примере:

  • Контроллер "геокодер" - это уникальный ресурс, который вы можете использовать для редактирования, создания, обновления и т.д.
  • Контрольные "сообщения" - это множественный ресурс, который будет обрабатывать входящие общие сообщения, которые вы можете индексировать, редактировать, создавать и т.д.

Ответ 2

http://guides.rubyonrails.org/routing.html#singular-resources

Иногда у вас есть ресурс, который клиенты всегда ищут без ссылаясь на идентификатор. Например, вы хотите, чтобы /profile всегда показывал профиль текущего пользователя. В этом случае вы можете использовать уникальный ресурс для map/profile (а не /profile/: id) для показать действие.

Хороший способ убедиться в том, что ресурс не имеет действия с индексом, так как он должен быть только одним.

Ответ 3

Отдельные ресурсы:

Иногда у вас есть ресурс, который клиенты всегда ищут без ссылки на ID. Например, вы хотели бы, чтобы /profile всегда показывал профиль текущего пользователя.

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

#1
/organizations/:id

#2
/organization #simply

Здесь более поздняя реализация имеет больше смысла; не так ли? вы получаете объект организации из ассоциации

# in organizations#show
@organization = current_user.organization

Чтобы определить такой особый ресурс, вы используете метод resource: Example

# in routes.rb
resource :organization

создает в вашем приложении шесть разных маршрутов, все сопоставление с контроллером организации:

введите описание изображения здесь

тогда как вы определяете множественные ресурсы с помощью метода resources

resources :organizations

введите описание изображения здесь

Ответ 4

Я думаю, что это просто индекс.

также сообщалось о проблемах с маршрутизацией с помощником ресурсов и помощниками формы. лично я использую синтаксис:

resources :someresource, except: :index 

чтобы избежать сообщенных ошибок.