Создание маршрутов RESTful с динамическим префиксом

98
10

У меня есть веб-сайт электронной коммерции, написанный в Rails 3.2.8, который продает билеты на музыкальные мероприятия. До сих пор я использовал простые маршруты RESTful в приложении:

/ => default route: /events
/events
/events/1
/events/1/new
/events/2
...

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

/ => default route: page to choose place
/morumbi => same as /morumbi/events
/morumbi/events/1
/morumbi/events/1/new
/maracana => same as /maracana/events
/maracana/events/2
...

Хотя я знаю, как это сделать, используя метод #match, у меня уже есть большое количество маршрутов, созданных с помощью гораздо более #resources метода #resources, и я бы хотел их сохранить.

Знаете ли вы решение, избегая использования #match?

спросил(а) 2012-10-05T00:08:00+04:00 7 лет, 11 месяцев назад
1
Решение
80

Вам нужно использовать метод #scope:

scope path: ':place_name', as: 'place' do
resources :events
...
end

Таким образом, GET/morumbi/events/1 вызовет EventsController#show с параметрами id: '1' и place_name: 'morumbi'.

ответил(а) 2012-10-05T18:11:00+04:00 7 лет, 11 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема