Маршрутизация: префикс имени элемента перед ресурсами контроллера - PullRequest
0 голосов
/ 25 января 2011

Я пытаюсь настроить следующие маршруты для работы в приложении Rails 3.

Сценарий :
В моем приложении есть следующие контроллеры:

  • Практики
  • Врачи
  • Пациенты
  • Рецепты

Ввод: ресурсы для каждого из них в маршрутах. Rb дает мне маршрутыот

  • example.com / практика
  • example.com / докторы / 1 / редактировать и т. д.

Однако я хотел бы иметьследующие ресурсоемкие маршруты, например:

  • example.com / james_practice / docs , который переводит на контроллер врачей
  • example.com / james_practice /awesome_prescription , который направляет к контроллеру предписаний и т. д. и т. д.
    оба дают мне доступ к : практика name и, кроме того, направляют правильный контроллер со всеми помощниками, такими как edit_docs_path (doctor) и т. д.

Как мне поступить?Я использовал

resources :prescriptions, :path => "/:practice/awesome_prescriptions"

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

Ответы [ 2 ]

1 голос
/ 25 января 2011

Я думаю, что это маршрут, который вы ищете:

scope :path => ":practice" do
  resources :docs, :controller => "doctors"
  resources :awesome_prescriptions, :controller => "prescriptions"
end

Кстати, вы не дали мне пример Patients, поэтому я его туда не поместил.

0 голосов
/ 25 января 2011

map.resources - это просто шаблон, больше похожий на ярлык.Если вы хотите иметь URL-адреса, как в ваших примерах, вы должны использовать «именованные маршруты».Хорошая скринкаст для Rails 2.x: http://railscasts.com/episodes/34-named-routes

Редактировать: Прочитайте раздел 3.2 в Rails Tutorial: http://guides.rubyonrails.org/routing.html

ps Также вы столкнетесь со случаем, когда люди используют «.»в их именах, и это вызовет проблемы.Вот мой маршрут для «тегов»

map.resources :tags, :requirements => { :id => %r([^/;,?]+) }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...