Заменить значение миграции по умолчанию в поле ввода формы Rails - PullRequest
0 голосов
/ 09 июля 2020

У меня есть таблица продуктов со значением по умолчанию min_quantity is 0 и max_quantity - MAX INT number 999999999 . Когда я попытался отобразить эту форму, значения по умолчанию из backened отображаются в пользовательском интерфейсе с min_quantity как 0 и max_quantity как 999999999. Как оставить эти поля ввода пустыми для действия create?

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? Пожалуйста, помогите

1 Ответ

1 голос
/ 10 июля 2020

Вы можете получить желаемое поведение, установив min_quantity и max_quantity на nil в методе new контроллера.

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

Причина, по которой значения min_quantity и max_quantity отображаются, когда проверка не выполняется, потому что они установлены в объекте @product, поэтому фактические значения атрибутов будут отображаться при перезагрузке формы

...