Ошибка маршрутизации с: имя пользователя в URL

У меня есть вопрос Rails 3. Я хочу, чтобы на странице показа моего контроллера пользователей был указан адрес app.com/people/username.

маршрут

resources :users  
match "/people/:username" => 'users#show', :as => :profile

Это работает, но если имя пользователя начинается с "." (точка) У меня есть ошибка:

Нет маршрутов соответствует "/people/.G"

А также

<%= link_to current_user.username, profile_path(current_user.username) %>

поднять исключение:

Не найдено ни одного маршрута {:controller=>"users",:action=>"show",:username=>".G"}

Извините за мой английский, спасибо!

1 ответ

Решение

Я не думаю, что начиная с . поддерживается по умолчанию в рельсах. Вы можете сделать что-то вроде

match "/people/:username" => 'users#show', :as => :profile, :username => /[\.a-zA-Z0-9_]+/

Вышеуказанное регулярное выражение будет соответствовать ., a-z, A-Z, 0-9 and _ как действительные символы для имени пользователя.

Другие вопросы по тегам