覆盖 Rails 表单输入字段中的迁移默认值

Override migration default value in Rails form input field

我有一个产品 table,默认 min_quantity0 max_quantity 是 MAX INT 数 999999999。 当我尝试显示此表单时,backened 的默认值显示在 UI 中,其中 min_quantity 为 0,max_quantity 为 999999999。 如何为创建操作将此输入字段留空?

schema.rb:

create_table "products”, id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin", force: :cascade do |t|
  t.string "name", null: false
  t.integer "min_quantity”, default: 0, null: false
  t.integer "max_quantity”, default: 999999999, null: false
end

products/_form.苗条:

= simple_form_for([@product]) do |f|
  = f.error_notification
  .form-inputs
    = f.input :name
    = f.input :min_quantity, label: 'Minimum Quantity'
    = f.input :max_quantity, label: 'Maximum Quantity'

我尝试使用 value : nil 作为:

-if f.object.new_record?
 = f.input :min_quantity, label: 'Minimum Quantity’, input_html: {value: nil}
-else 
= f.input :min_quantity, label: 'Minimum Quantity'

但是当出现验证错误时,输入的值会消失。当我使用 jQuery.

时出现同样的问题

那么我该如何处理这个覆盖 Rails 中变黑值的问题呢?请帮助

您可以通过在控制器的 new 方法中将 min_quantitymax_quantity 设置为 nil 来获得您想要的行为。

def new
  @product.min_quantity = @product.max_quantity = nil
end

min_quantitymax_quantity 的值在验证失败时显示的原因是因为它们是在 @product 对象中设置的,所以它们的属性值是真实的重新加载表单时显示