какая разница между resource
и resources
в маршрутизации rails
resource :geocoder
и
resources :posts
Какова реальная разница между ними?
какая разница между resource
и resources
в маршрутизации rails
resource :geocoder
и
resources :posts
Какова реальная разница между ними?
В сущности, ресурсы маршрутизации - это когда ресурсы дают возможности действий контроллеру.
http://guides.rubyonrails.org/routing.html#specifying-a-controller-to-use
Если плюрализованные ресурсы используются как способ обработки общих запросов для любого элемента, то особый ресурс - это способ работы с текущим предметом.
Итак, если у меня есть коллекция яблок, чтобы получить конкретное яблоко, я должен сказать маршрутизатору "Яблоки", какое яблоко получить, отправив идентификатор яблока. Если у меня уже есть один Apple, тогда идентификатор не нужен.
Обратите внимание на различия между ними, посмотрев, какие действия (или маршруты) у них есть:
В вашем примере:
http://guides.rubyonrails.org/routing.html#singular-resources
Иногда у вас есть ресурс, который клиенты всегда ищут без ссылаясь на идентификатор. Например, вы хотите, чтобы /profile всегда показывал профиль текущего пользователя. В этом случае вы можете использовать уникальный ресурс для map/profile (а не /profile/: id) для показать действие.
Хороший способ убедиться в том, что ресурс не имеет действия с индексом, так как он должен быть только одним.
Отдельные ресурсы:
Иногда у вас есть ресурс, который клиенты всегда ищут без ссылки на 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
Я думаю, что это просто индекс.
также сообщалось о проблемах с маршрутизацией с помощником ресурсов и помощниками формы. лично я использую синтаксис:
resources :someresource, except: :index
чтобы избежать сообщенных ошибок.