使用IP地址结束Rails 2 URL会导致路由错误?

我正在尝试以http:// servername / find / by / CRITERION / VALUE格式构建URL

CRITERION是一组有限的字符串,VALUE也是如此。 麻烦的是,在某些情况下,VALUE需要是一个IP地址,这会导致路由错误。

这是我的路线:

map.find 'find/by/:criterion/:query', :controller => "find", :action => "by" 

而来自Mongrel日志的错误:

 Processing ApplicationController#index (for 127.0.0.1 at 2010-05-07 10:20:32) [GET] ActionController::RoutingError (No route matches "/find/by/ip/1.2.3.4" with {:method=>:get}): Rendering rescues/layout (not_found) 

如果我访问/ find / by / foo / bar或/ find / by / foo / 1234我没有问题。 我怀疑问题可能是Rails根据URL中的句点推断MIME类型,但我真的不知道如何禁用它。 我已经尝试将:defaults => {:format =>:html}传递给路由,但这会导致Mongrel无法完全启动。

任何帮助赞赏!

路线通配工作!

我的路线现在是:

 map.connect 'find/by/*query', :controller => "find", :action => "by" 

这会将/ find / by /后面的所有内容放入Array,params [:query],每个数组对象一个URL段。 对于查询/find/by/ip/1.2.3.4,这看起来像:

 ["ip", "1.2.3.4"] 

所以我可以参考params [:query] [0]和params [:query] [1]。

如果有人有更好的方法,请发布!