簡體   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