加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 使用IP地址结束Rails 2 URL会导致路由错误?

发布时间:2020-12-17 03:11:53 所属栏目:百科 来源:网络整理
导读:我正在尝试以 http://servername/find/by/CRITERION/VALUE格式构建URL CRITERION是一组有限的字符串,VALUE也是如此.麻烦的是,在某些情况下,VALUE需要是一个IP地址,这会导致我出现路由错误. 这是我的路线: map.find 'find/by/:criterion/:query',:controller
我正在尝试以 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无法完全启动.

任何帮助赞赏!

解决方法

Route globbing工作了!

我的路线现在是:

map.connect 'find/by/*query',: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].

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读