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

Я впервые использую Ruby в проекте на своей работе, так что я все еще немного учусь (и люблю каждую минуту).

Хотя я понимаю смысл функций map.connect в файле route.rb, я не понимаю, что такое «ресурсы» и «именованный маршрут» в Rails. У меня здесь есть книга по 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" и "only" типа и параметры, свисающие с них, и я не могу точно определить, когда я должен их использовать, и какова выгода.

Кто-нибудь может меня поправить?

Ответы [ 3 ]

9 голосов
/ 26 ноября 2009

Именованные маршруты - только это; маршрут с прикрепленным именем, так что вы можете легко обратиться к нему, когда вы хотите создать URL. Среди прочего, это может устранить неоднозначность.

Ресурс - это, по сути, «вещь», которой вы хотите управлять маршрутами. Когда вы определяете, что «разделы» являются ресурсом, вы делаете следующее: «Я хочу, чтобы маршрут получал все разделы. Я хочу, чтобы маршрут добавлял новый раздел. Я хочу, чтобы маршрут редактировал существующий раздел. хочу маршрут для удаления раздела. " Что-то в этом роде. Эти маршруты указывают на стандартизированные имена методов, такие как index, new, edit и т. Д. Каждому из этих маршрутов будет присвоено имя в зависимости от того, что это; так что теперь есть маршрут с именем 'edit_section'.

Параметр :has_many позволяет вам сказать, что у определенного типа вещей есть суб-вещи. Например, вы можете сказать map.resources :sections, :has_many => [:questions]. Это означает, что вопрос принадлежит разделу, и это будет отражено в URL и маршруте. Вы получите URL-адреса, такие как '/sections/27/questions/12', и именованные маршруты, такие как 'section_questions'.

Параметр :only говорит "только создавать маршруты для этих действий"; Вы можете использовать его, если хотите разрешить только перечисление, просмотр и добавление элементов, а не редактирование или удаление.

1 голос
/ 26 ноября 2009

Честно говоря, Руководство по маршрутизации рельсов даст вам хорошее объяснение в такой простой формулировке, которую вы можете получить. Просто знайте, что ресурсный маршрут == RESTful маршрут, и все готово.

0 голосов
/ 26 ноября 2009

Мы все боролись с пониманием ресурсов и REST, когда DHH представил их сообществу Rails на первом RailsConf в 2006 году, поэтому неудивительно, что у вас возникли проблемы с пониманием этой концепции.

Я признаю, что сегодня есть гораздо лучшие и более современные объяснения понятий, но тогда, сразу после выступления Дэвида, я написал сообщение в блоге , в котором я, из обсуждения с другими Участники конференции, пытались понять и объяснить это. Это может помочь вам, поскольку не является само собой разумеющимся, что вы знаете все о REST, как это делают более свежие статьи.

...