我想让用户使用他们的注册用户名链接到他们的个人资料。
我准确地存储他们的用户名。
我设置匹配/:name的路由,然后使用find_by_name来获取它。我遇到的问题是当你输入example.com/username时,它的名称不起作用:Username。 (注意大写/小写差异)
所以我的问题是如何在网址中忽略大小写?
答案 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/UsErNaMe
或example.com/Username
将其缩小并将其与数据库中的小写版本匹配。
--- --- OR
只需让用户在任何地方都使用小写用户名。 (制作时将其缩小)
--- --- OR
拥有常量类型的用户名。所以总是将第一个字母大写或者其他东西。将它存储为小写,并在每次显示时将首字母大写。