Почему маршруты с точкой в ​​параметре не совпадают?

У меня есть маршрут для моих пользователей, например /iGEL/contributions, который отлично работает. Но теперь пользователь зарегистрирован с именем, подобным «A.and.B.», и теперь маршрут не соответствует, так как имя содержит точки.

Мой маршрут:

get "/:user/contributions" => 'users#contributions'

Есть идеи?

73 голоса | спросил iGEL 20 MarpmSun, 20 Mar 2011 19:07:02 +03002011-03-20T19:07:02+03:0007 2011, 19:07:02

3 ответа


0

Смотрите синий информационный блок здесь :

  

По умолчанию динамические сегменты не   принимать точки - это потому что точка   используется в качестве разделителя для форматированного   маршруты. Если вам нужно использовать точку   в динамическом сегменте добавить   ограничение, которое отменяет это - для   пример :id => /[^\/]+/ позволяет   ничего кроме слэша.

Это, например, будет:

get "/:user/contributions" => 'users#contributions', :constraints => { :user => /[^\/]+/ }
ответил Zabba 20 MarpmSun, 20 Mar 2011 19:16:12 +03002011-03-20T19:16:12+03:0007 2011, 19:16:12
0

Если ваш переменный сегмент является последним, то использование регулярного выражения [^\/] также будет использовать формат. В таком случае лучше использовать:

/([^\/]+?)(?=\.json|\.html|$|\/)/
ответил Christopher Oezbek 21 stEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 21 Sep 2015 22:43:41 +0300 2015, 22:43:41
0
ответил huntsfromshadow 20 MarpmSun, 20 Mar 2011 19:18:09 +03002011-03-20T19:18:09+03:0007 2011, 19:18:09

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132