2010-02-12 2 views
0

Как бы я мог проехать по маршруту www.homepage.com/site/about на www.homepage.com/about? Я все еще хотел бы использовать «сайт» в качестве контроллера, я просто хочу удалить его с маршрута.Вопрос маршрутизации в Rails

В отдельном примечании, как вы обычно настраиваете маршруты для таких страниц, как информация и контакт, которые появляются сразу после имени сайта?

+0

Давайте начнем делать заказ в Rails вопросах здесь. Теперь это беспорядок. Это дубликат моего старого вопроса: http://stackoverflow.com/questions/1722574/can-controller-names-in-restful-routes-be-optional –

ответ

2

Для первого вопроса, то вы могли бы поставить что-то подобное в вашем routes.rb:

map.about '/ о': контроллер => 'сайт': действие => 'о'

Что касается второго вопроса, я не совсем понимаю его, можете ли вы быть более конкретным?

2

В отдельной заметке, как вы обычно настраиваете маршруты для таких страниц, как и о контактах, которые появляются сразу после имени сайта?

Если следовать принципам REST (и вы, вероятно, должны), то по большому счету каждый URL должен быть заканчивающимся «ресурс» (то есть: существительное, «вещь»). Каждый ресурс, в свою очередь, имеет контроллер, и эти контроллеры имеют standardized and limited set of actions.

Это немного отличается от «классической» схемы маршрутизации, где контроллер будет иметь более разнообразные действия (и, таким образом, вы могли бы глыбу больше функциональности в один, больше контроллер)

Так, например, в успокоительная система:

  • /контактные бы карта к ContactController и не «контакт» действие какого-либо другому контроллер (как это может в классической маршрутизации)
  • /о бы аналогично карте к AboutController ,
  • /site/about будет отображаться в AboutController, но это будет «вложенный» маршрут в пространстве имен Site. Если вы хотите получить хардкор о вложенности (и я обычно делаю), я бы:
    • Поместить AboutController в модуль сайта (таким образом, сайты :: AboutController), который, в свою очередь, хранится в файле/приложении/контроллерах /site/about_controller.rb
    • Создать SiteController
    • Карта/сайт SiteController

Если вы имели существовавшие ранее сайт: AboutController сопоставляется с/сайта/о и вы хотите переназначить его/about, вы могли бы сделать это, используя @ rbaezam79's m енит. Тем не менее, я бы серьезно подумал о переносе и переименовании самого класса только для согласованности.

Все ресурсы, перечисленные выше, вероятно, будут рассмотрены как «одиночные» ресурсы. Это означает, что:

  • использовать map.resource вместо map.resources, чтобы сопоставить маршруты
  • действия по умолчанию является «шоу» (а не «Индекс», как это с не-одноплодными ресурсами). Обычно это будет единственное действие, в котором вы нуждаетесь. (Вы бы никогда не захотели создать или удалить свою страницу, не так ли?)
  • имена обычно являются единственными, а не множественными. (Хотя я столкнулся с некоторыми камнями преткновения с этим)

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

Смежные вопросы