【问题标题】:Override migration default value in Rails form input field在 Rails 表单输入字段中覆盖迁移默认值
【发布时间】:2020-07-09 18:16:12
【问题描述】:

我有一个产品表,默认 min_quantity0ma​​x_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

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

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-5


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-30
      • 2019-03-12
      相关资源
      最近更新 更多