如何验证文本字段中的输入是否为数字? not_integer
不是我要找的。它可以是十进制数。
答案 0 :(得分:4)
您可以查看numericality
validates :points, numericality: true
如果您想要更通用的方法,可以使用is_a?
。 Ruby中的父编号类是Numeric
。
a = 4
a.is_a? Numeric
=> true
b = 5.4
b.is_a? Numeric?
=> true
c = "apple"
c.is_a? Numeric
=> false
d = "4"
d.is_a? Numeric
=> false
答案 1 :(得分:1)
限制用户在表单级别输入非数字值,并避免昂贵的服务器调用以检查数值。
以下列形式使用:
<%= f.number_field :attribute_name, :step => 'any' %>
这将创建一个html元素,如下所示:
<input id="post_attribute_name" name="post[attribute_name]" step="any" type="number">
提交表单后,将在表单级别检查输入值。 step = "any"
将允许小数。
我还建议使用
在模型级别添加验证validates :attribute_name, numericality: true ## As suggested by Justin Wood
通过这种方式,您可以获得双重保护,即一个位于表单级别,另一个位于模型级别。