StackOverflow, кажется, имеет такой стиль маршрутов для вопросов:
/questions/:id/*slug
Чего достаточно легко добиться, как в маршрутах, так и в to_param
.
Однако StackOverflow, похоже, также перенаправляет на этот путь, когда передается только идентификатор.
Пример:
stackoverflow.com/questions/6841333
перенаправляет на:
stackoverflow.com/questions/6841333/why-is-subtracting-these-two-times-in-1927-giving-a-strange-result/
То же самое касается любой вариации слизняка.
stackoverflow.com/questions/6841333/some-random-stuff
Будет по-прежнему перенаправлять на тот же URL.
Мой вопрос: этот тип перенаправления обычно обрабатывается в контроллере (сравнивая запрос с маршрутом) или есть способ сделать это в routes.rb
?
Причина, по которой я не думаю, что это возможно в файле routes.rb
, заключается в том, что обычно у вас нет доступа к объекту (поэтому вы не можете получить слаг на основе идентификатора, верно?)
Для всех, кто заинтересован, Rails 3.2.13, а также использование FriendlyID