Может кто-нибудь объяснить мне в понятной форме, что непрофессионал, в чем дело с сопоставленными ресурсами и именованными маршрутами в Ruby on Rails?

StackOverflow https://stackoverflow.com/questions/1801756

Вопрос

Я впервые использую 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, как это делают более свежие статьи.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top