Задать вопрос

Как правильно разрулить роутинг при разных URL?

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

routes.rb
get '../:project_url', to: 'project#index'
либо
get '../:category_url', to: 'project#category'
либо
get '../:category_url/:project_url', to: 'project#category'


Как определять что сейчас у меня проекты без категорий, либо категория с проектами?
  • Вопрос задан
  • 117 просмотров
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Code Basics
    Ruby для начинающих
    1 месяц
    Далее
  • Хекслет
    Разработчик на Ruby on Rails
    5 месяцев
    Далее
  • Skillbox
    Ruby on Rails с нуля
    10 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 2
@caution
сделать пути для проекта без категории и для проекта с категорией, и при рендере запилить хелпер, который проверяет объект на наличие категории и ставит нужный путь.
первое что пришло в голову
Ответ написан
Комментировать
b0nn1e
@b0nn1e
Alcohol & Ruby on Rails
Попробуйте
get '../:category_url/:project_url', to: 'project#category'
Поднять выше в коде, чем другие варианты, тогда у этого будет выше приоритет.

Второй вариант из "плохих советов".
Добавьте в самый конец routes.rb
get '*url' => 'project#show'
И дальше переменную url вручную разбирать на части в контроллере(по наличию "/"), искать совпадения в бд по проекту или категории, если не найдено то в ручную вызывать ошибку
raise ActionController::RoutingError.new('Not Found')
ну и дальше по списку.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы