在我的应用程序中,有一个资源,机器和来自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。
谢谢。
答案 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 }