У меня есть маршрут для моих пользователей вроде /iGEL/contributions
, который отлично работает. Но теперь пользователь зарегистрирован с именем типа "A.and.B.", и теперь маршрут не соответствует, поскольку имя содержит точки.
Мой маршрут:
get "/:user/contributions" => 'users#contributions'
Любые идеи?
Ответ 1
Смотрите синий информационный блок здесь:
По умолчанию динамические сегменты не принимать точки - это потому, что точка используется как разделитель для форматирования маршруты. Если вам нужно использовать точку в динамическом сегменте добавьте ограничение, которое отменяет это - для пример :id => /[^\/]+/
позволяет ничего, кроме косой черты.
Это будет, например, следующее:
get "/:user/contributions" => 'users#contributions', :constraints => { :user => /[^\/]+/ }
Ответ 2
Если ваш переменный сегмент является последним, тогда использование регулярного выражения [^\/]
также будет использовать формат. В таком случае скорее используйте:
/([^\/]+?)(?=\.json|\.html|$|\/)/
Ответ 3
Похоже, что на ваш вопрос отвечает следующая ссылка.
http://avdi.org/devblog/2010/06/18/rails-3-resource-routes-with-dots-or-how-to-make-a-ruby-developer-go-a-little-bit-insane/