如何在rails中正确定义编码参数段的约束?

时间:2013-11-04 10:40:56

标签: ruby-on-rails routes

假设我们的网站中有用户的路径,在routes.rb

中定义如下
get '/users/:username' => 'users#show', as: 'u', constraints: {username: /[A-Za-z0-9\_]+/}

效果很好,无效的用户名只会通过,有一天,我们决定允许人们使用中文字符作为其用户名的一部分,格式将扩展到/[\u4e00-\u9fa5A-Za-z0-9_]/。所以问题来了,因为中文字符将编码为%FF格式字符串,我们不能使用该约束,如何正确定义约束以使规则像以前一样工作?

我试图退一步,只是为了使路线有效,使用/[%A-Za-z0-9\_]+/格式,收入请求至少会有效,但是当我调用u_path时,这个约束就会失败。 / p>

问题是何时匹配请求,Rails将使用原始传入格式,当构造路径时,它将使用解码格式。

如何处理这种情况?

我正在使用Rails 3.2.12。

0 个答案:

没有答案