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



我有一个产品表,默认值最小数量0最大数量99999999。当我尝试显示此表单时,backned中的默认值显示在UI中,最小数量为0,最大数量为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.slim:

= 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对象中设置的,因此在重新加载表单时将显示属性的实际值

最新更新