如何处理自定义URL中的大写和小写字符?
我想让用户使用他们的注册用户名链接到他们的个人资料。
我准确地存储他们的用户名。
我设置了匹配/:name的路由,然后使用find_by_name来获取它。 我遇到的问题是当你输入example.com/username时,它的名称不起作用:Username。 (注意大写/小写的区别)
所以我的问题是如何忽略url中的案例?
您可以将下载的username
与display_name
一起存储,该display_name
的格式与他们提供的格式相同。 然后,对任何输入进行downcase并将其与username
匹配,并仅使用display_name
以便显示:)
如果您愿意,您甚至可以在查找记录后从/username
重定向到/DisPlAyName
。
最简单的方法是在进行比较时将数据库和rails中的用户名转换为较低(或较高)的情况。
User.where('lower(username) = ?', params[:name].downcase).first
或者,如果您仍在使用rails 2:
User.find(:first, :conditions => ['lower(username) = ?', params[:name].downcase])
一种方法是存储用户名的小写版本。 当他们输入时
example.com/UsErNaMe
或example.com/Username
将其缩小并将其与数据库中的小写版本匹配。
– -要么 – –
只需让用户到处都有一个小写的用户名。 (制作时将其缩进)
– -要么 – –
拥有一个恒定类型的用户名。 所以总是将第一个字母大写或者其他东西。 将它存储为小写,并在每次显示时将首字母大写。