Ruby Gsub для проверки и удаления запятой из поля платных - PullRequest
1 голос
/ 29 июня 2019

У меня есть форма, которая принимает «платное» поле, и я пытаюсь подтвердите это.

Это числовое поле, но я хочу, чтобы пользователь мог вводить оплаченную сумму без ошибки в виде запятой, проверяя проверку.

amol.rb

class Amol < ApplicationRecord

 validate :check_paid

 def check_paid 
   errors.add(:paid, '- Commas are not allowed') if paid.to_s.gsub(/,/,"").to_i
 end 

end

Когда я ввожу оплаченную сумму как 12 535, тогда возникает ошибка, отображаемая как показано ниже:

1 error prohibited this article from being saved: Paid - Commas are not allowed

и это нормально.

Но проблема в том, что даже если я удаляю запятую из ввода, ошибка все равно сохраняется, и я не могу создать или обновить форму.

Любые предложения приветствуются.

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 29 июня 2019

Проблема с кодом выше:

if paid.to_s.gsub(/,/,"").to_i

Это выражение всегда возвращает true .Другой простой способ проверить, существует ли ,

errors.add(:paid, '- Commas are not allowed') if paid.to_s.include?(',')

Но следует помнить, что это не означает, что ваш оплаченный ввод является действительным числом.Возможно, вам понадобится добавить другую проверку, например пусто и числовое число .

Надеюсь, это поможет.

0 голосов
/ 02 июля 2019

Наконец, я получил желаемый результат, используя проверку, как показано ниже;

проверяет: оплачено, количество: {only_integer: true}, allow_nil: true

Теперь, когда я ввожу запятую в текстовое поле, я получаю сообщение об ошибке;

Paid is not a number

С другой стороны, если введено число без запятой и сохранено в базе данных, как ожидалось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...