我有一个用户设置用户名的应用程序,他们的个人资料网址与他们的用户名匹配,类似于Twitter。我遇到的问题是区分大小写。我在将用户名保存到数据库之前对其进行了下载,但我仍然遇到了问题。这是我如何匹配路线中的网址
match "/:id" => "users#show", via: :get
答案 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])