Может кто-нибудь объяснить мне в понятной форме, что непрофессионал, в чем дело с сопоставленными ресурсами и именованными маршрутами в Ruby on Rails?
-
05-07-2019 - |
Вопрос
Я впервые использую Ruby в проекте на своей работе, так что я все еще немного учусь (и люблю каждую минуту).
Хотя я понимаю суть функций map.connect
в файле route.rb, я не понимаю " resources " и "названный маршрут" особенности рельсов. У меня есть моя книга по Rails, и я прочитал ее несколько раз, но до сих пор не понимаю. Именованные маршруты, которые я получаю - я думаю, что это либо правила, либо явно определенные, либо рассчитанные с помощью блока кода, но ресурсы для меня являются полной загадкой; единственное, что я рад от них, - это то, что вам просто НУЖНО, если вы хотите, чтобы некоторые интересные вещи работали, например, возможность вызывать 'resource_path' (и его удивительное семейство методов).
Мой текущий проект имеет:
map.resources :application_forms
map.resources :sections
map.resources :questions
map.resources :seed_answers
map.resources :question_types
map.resources :form_questions
map.resources :rules
map.resources :form_rules
... но в моей книге по Rails есть эта удивительная разновидность "has_many" и "только" Тип хэши и параметры, висящие от них, и я не могу точно определить, когда я должен их использовать, и какова выгода. Р>
Кто-нибудь может меня поправить?
Решение
Именованные маршруты - только это; маршрут с прикрепленным именем, так что вы можете легко обратиться к нему, когда вы хотите создать URL. Среди прочего, это может устранить неоднозначность.
Ресурс - это, по сути, «вещь», которой вы хотите управлять маршрутами. Когда вы определяете, что «разделы» являются ресурсами, вы делаете следующее: «Мне нужен маршрут, чтобы получить все разделы. Я хочу маршрут, чтобы добавить новый раздел. Я хочу, чтобы маршрут редактировал существующий раздел. Мне нужен маршрут для удаления раздела. & Quot; Что-то в этом роде. Эти маршруты указывают на стандартизированные имена методов, такие как index
, new
, edit
и т. Д. Каждому из этих маршрутов будет присвоено имя в зависимости от того, что это; поэтому теперь существует маршрут с именем 'edit_section'
.
Параметр : has_many
позволяет вам сказать, что у определенного типа вещей есть суб-вещи. Например, вы можете сказать map.resources: section,: has_many = > [: Вопросы] код>. Это означает, что вопрос принадлежит разделу, и это будет отражено в URL и маршруте. Вы получите URL-адреса, такие как
'/ section / 27 / questions / 12'
и именованные маршруты, например, 'section_questions'
.
Параметр : only
говорит о том, что "только создавать маршруты для этих действий"; Вы можете использовать его, если хотите разрешить перечисление, просмотр и добавление элементов, а не редактирование или удаление.
Другие советы
Честно говоря, Руководство по маршрутизации Rails даст вам хорошее объяснение в виде такой простой формулировки, как ты можешь получить. Просто знайте, что ресурсный маршрут == RESTful маршрут, и все готово.
Мы все боролись с пониманием ресурсов и REST, когда DHH представил их сообществу Rails на первом RailsConf в 2006 году, поэтому неудивительно, что у вас возникли проблемы с пониманием этой концепции.
Я признаю, что сегодня есть намного лучшие и более современные объяснения понятий, но тогда, сразу после выступления Дэвида, я написал запись в блоге , в которой я, из обсуждения с другими участниками конференции, попытался понять и объяснить это. Это может помочь вам, поскольку не является само собой разумеющимся, что вы знаете все о REST, как это делают более свежие статьи.