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

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

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


Как определять что сейчас у меня проекты без категорий, либо категория с проектами?
  • Вопрос задан
  • 116 просмотров
Пригласить эксперта
Ответы на вопрос 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')
ну и дальше по списку.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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