«Недопустимый многобайтовый символ (US-ASCII)», проверка нового пользователя с помощью регулярного выражения с использованием Ruby on Rails - PullRequest
0 голосов
/ 17 января 2011

Я пытаюсь подтвердить имя и фамилию новых пользователей.Я хотел бы сопоставлять только буквы и пробелы .

Поэтому я добавляю в модель следующий код:

name_regex = surname_regex = /[a-zA-Z’ ]+/i

validates :name, :on => :create,
  :format         => { :with => name_regex }

validates :surname, :on => :create,
  :format         => { :with => surname_regex }

При навигациимое приложение RoR в браузере я получаю эту ошибку:

<DIRECTORY of my RoR APPLICATION>/model.rb:35: invalid multibyte char (US-ASCII)
<DIRECTORY of my RoR APPLICATION>/model.rb:35: invalid multibyte char (US-ASCII)
<DIRECTORY of my RoR APPLICATION>/model.rb:35: syntax error, unexpected $end, expecting keyword_end
  name_regex = surname_regex = /[a-zA-Z’ ]+/i
                                         ^

Что не так?

1 Ответ

7 голосов
/ 17 января 2011

При использовании UTF-8 и Ruby 1.9 вам необходимо добавить в префикс свои файлы, добавив в качестве первой строки:

# encoding: UTF-8

Это подсказка для синтаксического анализатора, чтобы не интерпретировать вещи снеправильный набор символов.Ruby 1.8 был очень слаб в этом, и это могло вызвать проблемы.

Используемый здесь тиковый символ - это не обычный апостроф ', а умная цитата , которой нет в 7-битный набор символов США ASCII.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...