如何
验证文本字段中的输入是否为数字? not_integer
不是我要找的。它可以是十进制数。
您可以检查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
限制用户在表单级别输入非数值,并避免仅仅为了检查数字性而进行昂贵的服务器调用。
在以下形式中使用它:
<%= 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
这样你就有了双重保护,即一个在表单级别本身,另一个在模型级别。