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

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

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

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

所以我的问题是如何忽略url中的案例?

您可以将下载的usernamedisplay_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/UsErNaMeexample.com/Username

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

– -要么 – –

只需让用户到处都有一个小写的用户名。 (制作时将其缩进)

– -要么 – –

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