用户名不区分大小写的URL

时间:2014-11-04 04:47:08

标签: ruby-on-rails ruby url

我有一个用户设置用户名的应用程序,他们的个人资料网址与他们的用户名匹配,类似于Twitter。我遇到的问题是区分大小写。我在将用户名保存到数据库之前对其进行了下载,但我仍然遇到了问题。这是我如何匹配路线中的网址

  match "/:id" => "users#show", via: :get

1 个答案:

答案 0 :(得分:4)

假设您将其存储在名为username

的列中

在您的用户控制器show操作中。你需要记下用户名列和params的用户名。

所以你需要改变:

@user = User.find_by_username(params[:id])

成为:

@user = User.find(:first, :conditions => ["lower(username) = ?", params[:id].downcase])

为了更清洁,您可以将params[:id]更改为params[:username]以避免混淆。

您的路线将是:

match "/:username" => "users#show", via: :get

查找用户将使用params[:username]

@user = User.find(:first, :conditions => ["lower(username) = ?", params[:username].downcase])