2014-11-04 54 views
1

我有一個應用程序,用戶可以在其中設置用戶名,並且他們的個人資料URL與他們的用戶名相似,類似於Twitter。我遇到的問題是區分大小寫。我在將數據保存到數據庫之前已將用戶名下載,但我仍然遇到問題。下面是我如何匹配URL在路線不區分大小寫的用戶名URL

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

回答

4

假設你把它存儲在名爲username列。

在你Users控制器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]) 
+0

即出現是與數字的用戶名不再起作用的另一個問題。 – 2014-11-04 05:49:43

+1

因爲這沒有關係。在一個新問題中描述你的錯誤,我會檢查出來。 – mohameddiaa27 2014-11-04 05:51:34