[英]Override migration default value in Rails form input field
我有一個產品表,默認min_quantity為0 , max_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_quantity
和max_quantity
設置為nil
來獲得您想要的行為。
def new
@product.min_quantity = @product.max_quantity = nil
end
驗證失敗時顯示min_quantity
和max_quantity
的值的原因是因為它們是在@product
object 中設置的,因此它們的實際屬性值將在重新加載表單時顯示
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.