如何让 ActiveAdmin 在客户端对其表单执行输入验证?

How can I get ActiveAdmin to perform input validation on it's forms on the client side?

我有一个用于在 ActiveAdmin 中创建新资源的表单。我的两个字段是整数(peak_count 和 off_peak_count)。

如果我在这些字段中输入字符串,我将收到数据库错误的堆栈跟踪,因为输入的字段类型错误。在尝试将数据输入数据库之前,如何让 ActiveAdmin 在客户端强制执行字段的输入类型?

这是我的表格:

form do |f|
    f.inputs do
      if f.object.new_record?
        f.input :name
      else
        f.input :id, :input_html => {:disabled => true}
        f.input :name, :input_html => {:disabled => true}
      end
      f.input :peak_count
      f.input :off_peak_count
    end
    f.actions
  end

对于客户端验证,您应该能够将 :as => :number 作为过滤器添加到您的输入字段中。我知道 ActiveAdmin 支持 URL、文本和电子邮件,因此可以推断它们也支持数字验证。

如果可行,请告诉我!

活跃的管理员应该已经在进行这些数字类型的输入,但浏览器不会阻止输入其他字符。

下面是我用的。我通过将其放入 active_admin.js:

所需的文件中,将其全局包含在活动管理员中

咖啡脚本:

$ ->
  $("input[type='number']").keydown (c) ->
    return false if c.shiftKey
    return false unless c.which in
      [8,9,13,37,38,39,40,45,46,48,
      49,50,51,52,53,54,55,56,57,96,97,98,
      99,100,101,102,103,104,105,110,
      173,189,190]

如果你只使用 JS 你可以转换它 here.

尽管如此,我仍会添加服务器端验证。