Como verificar se um parâmtro digitado é numérico ?
|
|
Olá, Tenho um text_field e quero saber se o valor digitado é numérico. Acontece que não há nenhum modelo associado ao formulário, de forma que não tenho como aplicar validates_numericality. Tem alguma função isNumeric? Obrigado Marcio |
|
|
Marcio, Você pode usar o método is_a?, veja: Na verdade, relendo sua pergunta, o is_a? não te ajuda… Acho que eu faria um teste assim: Espero ter ajudado… []’s |
|
|
var.kind_of?(Numeric) => kind_of eh alias de is_a var.instance_of?(Fixnum) => instance ja qr aclasse imediata var.to_i if var.respond_to(:to_i) |
|
|
Como os parâmetros vem como string, acho mais fácil usar algo do tipo:
Usando
|
|
|
Marco: Na hora em que é digitado ou após o formulário ser enviado ou os dois? No lado do servidor acho que o melhor é uma Regex mesmo, já que tudo chega como texto. |
|
|
É no controller, após receber os dados digitados. HAvia pensado ( tipo java ) em forçar uma conversão, e, havendo erro ( catch ), é porque não é numérico. Obrigado Marcio |
|
|
Faz isso não, porque não é disparada uma exceção quando a string não é um numero. Exemplo “banana”.to_i Nesse caso regex é a melhor saída mesmo. |
|
|
Fernando,
Por isso tinha feito duas conversões (p/ float e de volta para string) e uma compraração( com a string original)… Mas ficou uma pergunta, o que é mais caro, as conversões de tipo ou regex? |
|
|
|
|
|
Regex são um pouco mais lentas sim… mas são muito mais elegantes =). nofxx, como vc fez pra postar o código certinho? As tags (ruby e code) ficam cheias de tags html no meio do código comigo… |
|
|
Nossa, pra começar, q viagem a minha: 2 =~ . integer no regex ? hehe desconsiderem por favor…. @Fernando: Ueh cara, usei ruby /ruby mesmo.. que será? |

