1

在 Rails 应用程序中,我在 routes.rb 下面有这个当前的正则表达式验证器

match 'profile/:username' => 'users#show', :as => :profile, :constraints => { :username => /[ a-zA-Z0-9\-\_ ]+/ }

此约束在 rails2 中有效,但在 rails3 中不起作用并给我一个路由错误

没有路线匹配 [GET]

上面的正则表达式适用于非空白用户名(jai)和空白用户名(jai lalawat)它不起作用

4

2 回答 2

4

浏览器将空格替换为%20. 所以改变你的正则表达式来匹配它。

match 'profile/:username' => 'users#show', :as => :profile, :constraints => { :username => /[ a-zA-Z0-9\-\_20% ]+/ }
于 2013-11-11T13:00:51.127 回答
1

在您的 routes.rb 中为上述路线添加 %20 字符

match 'profile/:username' => 'users#show', as: :profile, constraints: { username: /[ a-zA-Z0-9\-\_20% ]+/ }
于 2013-11-11T13:41:05.833 回答