2013-03-23 3 views
0

Эй, ребята, это немного меня подтолкнуло. Итак, вот общая проблема:Rails to_s Mechanics

Я пишу приложение, которое требует от пользователей вводить имена Summoner из лиги легенд. Я делаю довольно простой скрипит данных о совпадении и ввод данных в мою базу данных. К сожалению, у меня есть некоторые ошибки, регистрирующие пользователей со специальными символами.

Для этого примера я буду использовать один пользователь проблемы: Rick

Как вы можете видеть РИК = Rick!. Поэтому, когда я делаю очистку данных с сайта, я получаю правильное значение, которое я нажимаю на массив для последующего использования.

Когда мне нужны имена игроков я тяну из массива следующим образом: (player_names это массив)

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

Проблема заключается в том, что пользователи с любыми специальными символами не тянет. Должен ли я использовать find_by? Является ли to_s меняющим исходные значения? Я действительно очень потерял то, что нужно делать, и буду очень признателен за любую помощь/совет.

Спасибо заранее,

Dan

+2

Я считаю, что это не 'to_s', а кодировка DB; – ted

+0

@ted im немного смущен ответом. Является ли кодировка DB ссылкой на режим хранения базы данных? Если это так, я смотрю на бэкэнд сайта, и я вижу, что каждое из этих имен пользователей отображается правильно с их специальными символами. –

+0

Почему вы звоните '.to_s'? Вы не нажимаете строки на массив 'player_names'? – gylaz

ответ

0

Я хотел бы поблагодарить Брайан Кунг за ссылку на следующее: joelonsoftware.com/articles/Unicode.html Это делает большую работу, дающую абсолютный минимум программисту действительно нужно понять.

Для моей конкретной проблемы я использовал скребок для HTML, чтобы получить содержимое, но содержащее HTML-элементы. Когда они использовались с моими поисками SQL, было очевидно, что вещи не были найдены. Для того, чтобы исправить это я использовал HTMLEntities Gem, чтобы декодировать текст следующим образом (как только я поставил в массив изначально):

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

coder = HTMLEntries.new 

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

вынос

При работе с текстом, и если прибегая к ошибкам, я настоятельно рекомендую отслеживать строки, с которыми вы работаете, с источником и действительно понимая, какая кодировка используется в каждом процессе. Делая это, вы можете легко найти, где все идет не так.

Смежные вопросы