GeniyZ.Ru

Качественный личный мультибложег

Ruby и Ruby on Railsinvalid multibyte char (US-ASCII) - верное решение

На днях решил таки третьи рельсы скрестить с Ruby 1.9.2

И, практически на первых же шагах, лицезрел сабж.

И о ужас!!! Мои гугления не привели к единственно верному решению данной ситуации.

И так: У вас в контроллере или в модели ну или в шаблоне или хелпере имеется некий не US-ASCII текст. Вы запускаете сервак и обнаруживаете пятисотую ошибку с текстом БЛА-БЛА-БЛА… invalid multibyte char (US-ASCII)

в большинстве случаев рекомендуют засорять код разного рода магическими каментами — это в корне не верно!!! Не слушайте вы их!

Что правильно делать:

допустим у вас имеется хелпер, который выводит вверху справа форму авторизации или аватар и кнопки "выйти" и "профайл" или:


if this_admin?
links << link_to "пользователи", admin_users_path
links << link_to "жалобы", admin_abuses_path
links << link_to "статистика", admin_stat_path

естественно интерпретатор будет ругаться на каждую из строк. И это хорошо! Так и надо! Ведь это не код — это безобразие!!!
Ведь правильно он должен выглядеть например так:


if this_admin?
links << link_to t('admin_users.index.title'), admin_users_path
links << link_to t('admin_abuses.index.title'), admin_abuses_path
links << link_to t('admin_stat.index.title'), admin_stat_path

а в файлах в /config/locales/
пишем уже нормальные тексты:
ru:
admin_users:
index:
title: "Пользователи"
admin_abuses:
index:
title: "Жалобы"

И так далее… Это ищё и DIY заодно =) Ведь эти же данные будут задействованы и в title страниц и в H1!!!

Я очень рад, что нельзя в рельсах (ну и в руби вообще) в коде использовать русский язык — это заставляет на самых первых этапах написания кода задумываться об интернационализации (или как там это правильно звать) и о ещё более чётком разделении кода, дизайна и данных.

Для кого-то это баг, кто-то пишет из-за этого костыли, а я этому рад!!!

0Fri Mar 11 2011 00:00:00 GMT+0000 (UTC)Владимир

  • Thu Jul 21 2011 00:00:00 GMT+0000 (UTC)Maxim Filatov

    DIY — Do It Yourself?..

    • Thu Jul 21 2011 00:00:00 GMT+0000 (UTC)GeniyZ

      Извиняюсь — кочно же DRY =)

    • Sat Sep 24 2011 00:00:00 GMT+0000 (UTC)Moifar

      Cпс! Только начинаю учить Руби и сразу столкнулся с этой проблемой. Ты реально помог!


      Ответить

      если укажите - сообщу вам об ответе