Параметры с точками в URI - PullRequest
0 голосов
/ 08 апреля 2010

В моем приложении есть ресурс, компьютер и вложенный ресурс с компьютера: ip.

Я хочу получить доступ к URI Ip, набрав IP-адрес.

URI должен выглядеть примерно так:

/machines/m123/ips/192.168.0.1.xml

Где «m123» - это имя машины, а «192.168.0.1» - один из ips этой машины.

Проблема здесь в том, что рельсы не понимают точки из ip и формата. Когда я пытаюсь получить доступ к этой странице, я получаю:

No route matches "/machines/m123/ips/192.168.0.1.xml"

И если я заменю точки на любой другой символ, который работает, ведьма означает, что рельсы не обрабатывают точки в URI.

Есть ли способ ввести более сложное регулярное выражение на маршрутах, чтобы убедиться, что рельсы могут обработать его так, как я хочу?

Я использую рельсы 2.3.5 и ruby ​​1.8.7.

Спасибо.

1 Ответ

2 голосов
/ 08 апреля 2010

Используйте параметр :requirements => { :param_name => pattern_regex }:

IP_PATTERN = /\A(?:25[0-5]|(?:2[0-4]|1\d|[1-9])?\d)(?:\.(?:25[0-5]|(?:2[0-4]|1\d|[1-9])?\d)){3}\z/.freeze
map.resources :ip, :requirements => { :id => IP_PATTERN }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...