繁体   English   中英

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

[英]Override migration default value in Rails form input field

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

架构.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

产品/_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 中覆盖变黑值的问题呢? 请帮忙

您可以通过在 controller 的new方法min_quantitymax_quantity设置为nil来获得您想要的行为。

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

验证失败时显示min_quantitymax_quantity的值的原因是因为它们是在@product object 中设置的,因此它们的实际属性值将在重新加载表单时显示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM