如何处理自定义URL中的大写和小写字符?

时间:2010-11-18 23:47:27

标签: ruby-on-rails ruby routes case-insensitive

我想让用户使用他们的注册用户名链接到他们的个人资料。

我准确地存储他们的用户名。

我设置匹配/:name的路由,然后使用find_by_name来获取它。我遇到的问题是当你输入example.com/username时,它的名称不起作用:Username。 (注意大写/小写差异)

所以我的问题是如何在网址中忽略大小写?

3 个答案:

答案 0 :(得分:3)

您可以将username下注与display_name以及他们提供给您的格式存储在一起。然后,对所有输入进行保留,并将其与username匹配,并仅使用display_name,以及显示:)

如果您愿意,您甚至可以在查看记录后从/DisPlAyName重定向到/username

答案 1 :(得分:3)

最简单的方法是在进行比较时将数据库和rails中的用户名转换为较低(或较高)的情况。

User.where('lower(username) = ?', params[:name].downcase).first

或者如果你还在使用rails 2:

User.find(:first, :conditions => ['lower(username) = ?', params[:name].downcase])

答案 2 :(得分:0)

执行此操作的一种方法是存储其用户名的小写版本。当他们输入

example.com/UsErNaMeexample.com/Username

将其缩小并将其与数据库中的小写版本匹配。

--- --- OR

只需让用户在任何地方都使用小写用户名。 (制作时将其缩小)

--- --- OR

拥有常量类型的用户名。所以总是将第一个字母大写或者其他东西。将它存储为小写,并在每次显示时将首字母大写。