使用导轨验证数字 3.


如何

验证文本字段中的输入是否为数字? 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

这样你就有了双重保护,即一个在表单级别本身,另一个在模型级别。

相关内容

  • 没有找到相关文章

最新更新