![]() |
|
![]() ![]() ![]() |
|
RedAlliance |
|
|||
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 1.12.2010 Репутация: нет Всего: нет |
в контроллере создала метод для генерации логина в приложении:
с латиницей всё работает замечательно,а вот с русскими именем и фамилией:в консоли пишет абракадабру,а в базу заносит пустое поле(у файла контроллера кодировка utf-8 без bom)... как с этим бороться? |
|||
|
||||
source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 12 Всего: 56 |
Ожидаемо, русские буквы занимают по 2 байта, а ты сходу пытаешься использовать первый байт имени. Посмотри ActiveSupport::Multibyte::Chars Это сообщение отредактировал(а) source777 - 9.3.2011, 00:50 -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
RedAlliance |
|
|||
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 1.12.2010 Репутация: нет Всего: нет |
я сделала так: взяла [0,2] и [0,4] соответственно..осталось только сделать их маленькими буквами,потому что .downcase тут не срабатывает..
|
|||
|
||||
RedAlliance |
|
|||
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 1.12.2010 Репутация: нет Всего: нет |
в итоге получилось:
[code=ruby] username_letters = first_name.mb_chars.downcase.to_s[0,2] + surname.mb_chars.downcase.to_s[0,4][/ruby] |
|||
|
||||
source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 12 Всего: 56 |
Твой вариант фигов в первую очередь тем, что он негласно требует чтобы first_name и surname были в двухбайтовой кодировке, если они окажутся английскими, то логика изменится.
Правильнее делать как-то так:
P.S. Кстати surname логичнее переименовать в last_name. -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
RedAlliance |
|
|||
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 1.12.2010 Репутация: нет Всего: нет |
спасибо!!!-так действительно правильнее,и в других местах не придётся высчитывать байты
![]() |
|||
|
||||
RedAlliance |
|
||||
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 1.12.2010 Репутация: нет Всего: нет |
как-то странно получается:
при загрузке файлов слегка поменяла в связи с русскими буквами код в uploadfile.rb:
в контроллере не меняла:
при этом с латиницей нормально работало:загружало тем,кого указал,а теперь ещё и лишним,а именно: почему-то всем преподам(userclass=1)-не понимаю,откуда??? Это сообщение отредактировал(а) RedAlliance - 13.3.2011, 00:04 |
||||
|
|||||
source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 12 Всего: 56 |
Срочно читай "Рефакторинг" Фаулера.
-------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
RedAlliance |
|
|||
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 1.12.2010 Репутация: нет Всего: нет |
то есть это мой код способствует тому,что там лишние получатели образуются-то есть код неверный?или вам просто не нравится,как написано-то есть код корявый?
|
|||
|
||||
source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 12 Всего: 56 |
Корявый - это когда отступы некрасиво расставленны, а для подобного кода общепринятое именование - "дурнопахнущий". Даже ты - автор кода - уже не в силах понять что делает твой код (эквивалент "почему не работает как ожидается"), это явный признак того, что код следует полностью переписать как можно скорее. -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
RedAlliance |
|
|||
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 1.12.2010 Репутация: нет Всего: нет |
переписала код:
-всё то же самое: лишние получатели с userclass==1(хотя нет никакого упоминания о них ни в контроллере,ни здесь(в модели для загрузки файлов).....) Это сообщение отредактировал(а) RedAlliance - 20.3.2011, 12:10 |
|||
|
||||
RedAlliance |
|
|||
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 1.12.2010 Репутация: нет Всего: нет |
так и не поняла,в чём была проблема..в итоге сделала так:
всё работает так,как надо ![]() |
|||
|
||||
source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 12 Всего: 56 |
Во, так гораздо лучше, только непонятно откуда берётся строка visible и почему ты решила массив назвать так же как строку...
А раз получатели берутся из этой строки, то ошибка скорее была в коде, который формировал строку, а не в приведённом участке, который эту строку разбирает. -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Ruby on Rails" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Ruby On Rails | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |