URI上带点的参数

时间:2010-04-08 13:31:47

标签: ruby-on-rails routing

在我的应用程序中,有一个资源,机器和来自machine的嵌套资源:ip。

我希望能够访问输入IP地址的IP的URI。

URI应该是这样的:

/machines/m123/ips/192.168.0.1.xml

其中“m123”是机器的名称,“192.168.0.1”是该机器的ips之一。

这里的问题是rails错过了ip和格式的点。当我尝试访问此页面时,我得到:

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

如果我替换任何其他角色的点,那么女巫意味着铁轨没有处理URI上的点。

有没有办法在路线上输入更复杂的正则表达式,以确保铁路可以按我想要的方式对待它?

我使用的是rails 2.3.5和ruby 1.8.7。

谢谢。

1 个答案:

答案 0 :(得分:2)

使用: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 }