You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ActiveAdmin全局将numeric(12,2)字段改为type="text"并添加float-field类

当然可行!用猴子补丁轻松搞定全局修改

完全可以实现全局把numeric(12,2)(对应Rails里的:decimal类型字段)渲染为type="text"的输入框并添加float-field类,猴子补丁是个直接有效的方案。核心思路是修改Formastic对Decimal类型字段的默认渲染逻辑,具体步骤如下:

1. 创建猴子补丁文件

在你的Rails项目的config/initializers目录下新建一个文件,比如formastic_decimal_input_patch.rb,写入以下代码:

module Formastic
  module Inputs
    class DecimalInput < NumberInput
      def input_html_options
        # 合并原有HTML选项,替换type为text,添加float-field类
        base_options = super
        base_options.merge(
          type: "text",
          class: [base_options[:class], "float-field"].compact.join(" ")
        )
      end
    end
  end
end

2. 代码说明

  • Formastic默认会把Rails的:decimal类型字段(也就是你数据库里的numeric(12,2))交给DecimalInput处理,而它继承自NumberInput,默认输出type="number"的输入框。
  • 我们重写了input_html_options方法,把输入框的type强制改成text,同时将float-field类合并到原有class列表中(避免覆盖ActiveAdmin或Formastic自带的类)。

3. 生效验证

保存文件后重启你的Rails服务器,打开ActiveAdmin对应的表单页面,查看numeric(12,2)字段的输入框元素:

  • 应该能看到type="text"属性
  • class属性里包含float-field

这样就完成了全局的修改,所有这类字段都会按照你的需求渲染啦~

内容的提问来源于stack exchange,提问作者Evmorov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:44:47