У меня есть поле ввода в форме, в которой пользователи вводят сумму в долларах. Я использую autoNumeric для маскирования этого поля, так что, когда пользователь вводит 1000, он отображает 1000.00 в текстовом поле.Sanitize dollar value до сохранения
В столбце в базе данных (requested_amount) является десятичной с точностью => 8 и шкалой => 2.
Я сделал обратный вызов, основанный на других SO ответов, который пытается лишить запятой из ряда перед проверкой и сохранением в базе данных.
def strip_commas_from_dollar_fields
self.requested_amount = self.requested_amount.to_s.gsub(',', '')
end
# Callback
before_validation :strip_commas_from_dollar_fields
Params хэш, который передается через то я отправить форму:
"requested_amount"=>"80,000.00"
Однако, когда я осматриваю номер в консоли, он показывает:
=> 80.0
Мне нужна в базе данных будет 80000.00.
К сожалению, вы можете объяснить, что вы имеете в виду, используя requested_amount_wrapper в моем параметры? Я изменил имя поля в форме на request_amount_wrapper, но получал ошибку unpermitted params. Затем я добавил обработчик запрашиваемой суммы к моему контроллеру и теперь получаю неизвестную ошибку атрибута на request_amount_wrapper. – Questifer
Я имею в виду, что вам нужно использовать имя 'request_amount_wrapper' вместо' request_amount' в вашем представлении (в вашей форме). –
OK Я сделал это. Я вижу сообщение msg в терминале: Неопроверенные параметры: request_amount_wrapper. Параметр hash показывает «request_amount_wrapper» => «120,000.00», но значение не сохраняется на request_amount. Я вижу ноль в консоли. – Questifer