“无效的多字节字符(US-ASCII)”使用Ruby on Rails验证具有正则表达式的新用户

时间:2011-01-17 20:45:31

标签: ruby-on-rails regex string validation ruby-on-rails-3

我正在尝试验证新用户的姓名和姓氏。我想只匹配字母空格

所以我在模型中加入了以下代码:

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 个答案:

答案 0 :(得分:7)

使用UTF-8和Ruby 1.9时,您需要通过添加第一行来为文件添加前缀:

# encoding: UTF-8

这是解析器的一个提示,以确保不使用错误的字符集来解释事物。 Ruby 1.8对此非常松懈,可能会带来麻烦。

您在那里使用的刻度字符不是常规撇号',而是在7位US ASCII字符集中找不到的智能引用