2013-03-23 32 views
0

嘿,這讓我絆倒了不少。因此,這裏是普遍的問題:Rails to_s力學

我寫信,要求用戶從傳說中的聯賽進入他們的召喚師名的應用程序。我做了一個非常簡單的匹配數據擦除,並將數據輸入到我的數據庫中。不幸的是,我有一些錯誤註冊用戶「特殊字符」。

在這個例子中,我將使用一個問題的用戶:裏克

正如你可以看到RICK =裏克!因此,當我從站點進行數據清理時,我會得到正確的值,並將其推送到數組中供以後使用。

一旦我需要的球員的名字我從陣列中拉如下:(player_names是數組)

@temp_player = User.find_by_username(player_names[i].to_s) 

問題是與任何特殊字符的用戶不被拉動。我應該不使用find_by嗎?是否要改變我的原始價值?我真的很遺憾要做什麼,並會非常感謝任何幫助/建議。

由於提前,

+2

我相信這不是'to_s'但DB字符集; – ted 2013-03-23 18:41:25

+0

@ted im有點困惑的迴應。數據庫字符集是指數據庫存儲模式?如果是這樣,我正在查看網站的後端,並且我看到每個用戶名都以其特殊字符正確顯示。 – 2013-03-23 18:47:16

+0

你爲什麼叫'.to_s'?你是不是將字符串推到'player_names'數組中? – gylaz 2013-03-23 18:51:02

回答

0

我要感謝布賴恩功夫的鏈接如下:joelonsoftware.com/articles/Unicode.html它做了偉大的工作,給予最低限度的程序員真正需要了解的。

對於我的具體問題我已經使用了HTML刮刀以獲得內容,但裏面存放HTML項貫穿始終。當用我的SQL查找來使用這些時,顯然沒有找到任何東西。爲了解決這個問題我用ヶ輛創業板(我把入陣最初是作爲即將推出)的文本如下解碼:

requires 'RubyGems' #without this cannot include htmlentries as a gem 
requires 'HTMLEntries' 

coder = HTMLEntries.new 

line = '<' 
player_names.push(coder.decode(line)) 

外賣

當文本,如果工作遇到錯誤我強烈建議將正在使用的字符串跟蹤到源,並真正理解每個過程中使用的編碼。通過這樣做,您可以輕鬆找到問題所在。