为什么Rails number_field表单生成器接受浮点值?

时间:2015-05-22 12:53:31

标签: ruby-on-rails ruby forms ruby-on-rails-4

我有一个带有number_field的rails表单构建器,如下所示:

= f.number_field :integer_value, :step => 1, :class => 'form', :value => obj.value

它生成html为:

<input class="form" id="people_attributes_232322900500_integer_value" name="people[people_attributes][232322900500][integer_value]" placeholder="" step="1" type="number">

但它仍接受浮动值。

我在服务器端获取的参数是

{........, "integer_value"=>"12123.323"}

2 个答案:

答案 0 :(得分:2)

您仍需要验证后端中的号码,例如:

validates :integer_value,
  :presence => true,
  :numericality => { :only_integer => true, :greater_than => 0, :less_than_or_equal_to  => 100 }

对于input元素,添加min="0"以将值限制为整数。但是,用户可以在所有/大多数浏览器中输入浮点数。

答案 1 :(得分:1)

这不是因为铁轨。输入类型=&#39;数字&#39;是一个HTML5结构,它只提供此字段中提供的数字。它不会限制用户输入非数字字符。

虽然大多数浏览器会在此字段上应用客户端验证,但当您尝试提交表单验证时,将显示错误。 注意:验证错误完全取决于浏览器和浏览器版本

您应该在字段上应用服务器端验证,以确保不接受非数字字段 检查zwippie提供的服务器端验证答案

参考链接:http://www.w3schools.com/html/tryit.asp?filename=tryhtml_input_number