我确实从表单
发布了电话号码def update_phone
if params[:phone]
#here I want to check weather params[:phone] is number or string
end
我确实使用params[:phone].class
它始终显示字符串类。我怎样才能找到字符串或整数?
答案 0 :(得分:1)
在Ruby中,您通常不会对类型进行操作,而是对变量的行为进行操作。如果你想chceck params[:phone]
是有效的电话号码,请使用regexp,i。 E:
phone = params[:phone] if params[:phone] =~ /\A\(?\d{3}\)?-?\d{3}-?\d{3}\Z/
但更好的选择是在模型中的验证器中进行检查。
答案 1 :(得分:0)
编辑,感谢您的评论。我认为这适用于大多数常见情况。但是,这不适用于前导零:
str = params[:phone]
#it is numeric if the following is true:
str.to_f.to_s == str || str.to_i.to_s == str
答案 2 :(得分:0)
您应该在模型中使用一些Validators并使用电子数据的正则表达式:根据您所在国家/地区的电话号码系统,只允许使用数字和一些格式字符,例如+-./()
和空格:{{ 1}}或+23 (0) 322/242324-12
都是有效数字。