Мы создаем CMS Rails, где блог или список новостей могут появляться в любом месте дерева сайта. Это означает, что любая страница знает свой тип на основе поля базы данных - например: страница знает, что она относится к списку новостей типа, поэтому, когда этот URL-адрес вызывается для этой страницы, нам нужно, чтобы он обрабатывался контроллером списков новостей. Подстраницы страницы списка новостей - это новости, каждая из которых имеет дату и категорию.
URL к списку новостей может быть
/dogs/snoopy-news/
и новость может быть
/dogs/snoopy-news/snoopy-is-great/
Сложность для нас связана с URL-адресами, которые имеют дополнительные параметры для перечисления диапазонов дат новостей или списков категорий, например:
Перечисление всех новостей за ноябрь
/dogs/snoopy-news/2010/11/
Или перечисление всех историй, которые имеют еду в качестве своей категории:
/dogs/snoopy-news/category/food/
Поскольку эта страница списков новостей может находиться на любом уровне в иерархии сайта, как бы мы подошли к определению, что 2010 год является параметром или эта категория является параметром?
(Мы будем хранить все URL-адреса в базе данных для каждой страницы, чтобы мы могли сначала посмотреть, существует ли страница для URL-адреса)
РЕДАКТИРОВАТЬ: Этот пост дает возможное решение: Динамические CMS как маршруты в ruby на рельсах , которые мы опробуем и сообщим о них. При сохранении страницы в CMS мы добавили бы маршруты в таблицу маршрутизации в этой точке не только для самой страницы, но и для возможных параметров:
/dogs/snoopy-news/{year}/{month}/