@Sahnen

Как настроить роутинг?

Допустим, есть сервис услуг. Набор услуг в регионах может различаться и пользователь может просмотреть весь список услуг, а может выбрать какой-то регион и посмотреть только услуги, предоставляемые в выбранном регионе.
В первом случае путь к конечной странице выглядит так:

mysite.ru/services/all

А во втором случае, например, так:

mysite.ru/moskva/services/all

Но, ни в коем случае не так:

mysite.ru/regions/region_id/servises/all

Принципиально, чтобы услуги были вложены в регион, а не наоборот.

Вопрос: как (хотя бы какими способами и желательно без дополнительных гемов), можно настроить роутинг так, чтобы, по умолчанию, регион не фигурировал в пути вообще, но если просматривать определенный регион, то в путь добавлялся регион? (Только id региона, без контроллера).
Заранее спасибо!
  • Вопрос задан
  • 137 просмотров
Решения вопроса 1
viktorvsk
@viktorvsk
Принципиально, чтобы услуги были вложены в регион, а не наоборот.

Ох уж эти сеошники
По факту, вам нужно просто
mysite.ru/regions/region_id/servises/all

Превратить в:
mysite.ru/moskva/services/all

Для этого можно использовать
resources :regions, path: ''
что бы убрать regions
Что бы превратить region_id в moskva, смотрите apidock.com/rails/Object/to_param

На самом деле, оптимально иметь что-то вроде mysite.ru/moskva123 (с учетом что region_id == 123), но ваши сеошники поймут это только когда столкнутся с тем, что нужно переименовать moskva в moscow
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Sahnen Автор вопроса
Про to_param я в курсе, спасибо.
А вот как вообще избавиться от региона, если нужно просмотреть все услуги не привязываясь к региону?
Имеется ввиду первая часть вопроса:

mysite.ru/services/all

Можно, конечно написать

get 'services' => 'services#index'

Но дальше могут быть еще категории. Например:

-Автоперевозки
|---Такси
|---Грузоперевозки
--- |---Малотоннажные
--- |---Крупнотоннажные
и т.д.

Не делать же 2, практически одинаковых, набора.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы