为了账号安全,请及时绑定邮箱和手机立即绑定

为什么在参数中带有点的路由不匹配?

/ 猿问

为什么在参数中带有点的路由不匹配?

手掌心 2019-10-19 16:58:30

我有一条适合我的用户的路线/iGEL/contributions,效果很好。但是现在,一个用户注册的名称类似于“ A.B.”,但由于名称中包含点,因此路由不匹配。


我的路线:


get "/:user/contributions" => 'users#contributions'

有任何想法吗?


查看完整描述

3 回答

?
慕田峪9158850

请在此处查看蓝色信息框:


默认情况下,动态细分不接受点-这是因为点被用作格式化路由的分隔符。如果您需要在动态段中使用点,请添加一个覆盖该点的约束-例如,:id => /[^\/]+/允许除斜杠之外的任何内容。


例如,将是:


get "/:user/contributions" => 'users#contributions', :constraints => { :user => /[^\/]+/ }


查看完整回答
反对 回复 2019-10-19
?
largeQ

如果您的变量段是最后一个段,则使用[^\/]正则表达式也将占用格式。在这种情况下,请使用:


/([^\/]+?)(?=\.json|\.html|$|\/)/


查看完整回答
反对 回复 2019-10-19
?
梵蒂冈之花

看起来以下链接回答了您的问题。


http://avdi.org/devblog/2010/06/18/rails-3-resource-routes-with-dots-or-how-to-make-a-ruby-developer-go-a-little-bit-疯/


查看完整回答
反对 回复 2019-10-19

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信