在url路由中允许用户名中的空格

时间:2013-11-11 12:04:56

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.2

在Rails应用程序中,我在routes.rb下面有这个当前的Regex验证器

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

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

没有路线匹配[GET]

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

2 个答案:

答案 0 :(得分:4)

浏览器用%20替换空格。所以改变你的正则表达式也是如此。

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

答案 1 :(得分:1)

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

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