0

我确实从表格中发布了电话号码

def update_phone
  if params[:phone]
  #here I want to check weather params[:phone] is number or string 
end

我确实使用params[:phone].class它总是显示字符串类。我怎样才能找到字符串或整数?

4

3 回答 3

1

在 Ruby 中,您通常不会对类型进行操作,而是对变量的行为进行操作。如果您想检查那params[:phone]是有效的电话号码,请使用正则表达式,即:

phone = params[:phone] if params[:phone] =~ /\A\(?\d{3}\)?-?\d{3}-?\d{3}\Z/

但更好的选择是在模型中的验证器中检查这一点。

于 2012-06-21T07:25:14.223 回答
0

您应该在模型中使用一些验证器并结合电话号码的正则表达式:根据您所在国家/地区的电话号码系统,只允许使用数字和一些格式字符,例如+-./()和空格:+23 (0) 322/242324-12或者234.1432.123都是有效数字。

于 2012-06-21T07:25:42.973 回答
0

已编辑,感谢您的评论。我认为这适用于最常见的情况。但是,这不适用于前导零:

str = params[:phone]

#it is numeric if the following is true:
str.to_f.to_s == str || str.to_i.to_s == str
于 2012-06-21T06:50:25.750 回答