我有一个产品表,默认值最小数量为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_quantity
和max_quantity
设置为nil
来获得所需的行为。
def new
@product.min_quantity = @product.max_quantity = nil
end
验证失败时显示min_quantity
和max_quantity
的值的原因是,它们是在@product
对象中设置的,因此在重新加载表单时将显示属性的实际值