양식 텍스트 필드에서 반환 된 값이 숫자 즉, 12, 12.5 또는 12.75인지 확인하고 싶습니다. 이를 확인하는 간단한 방법이 param
있습니까? 특히 값이 ?
답변
그냥 regexp, 사소하고 그 이상으로 생각할 가치가 없습니다.
v =~ /\A[-+]?[0-9]*\.?[0-9]+\Z/
(Justin의 의견에 따라 수정 됨)
답변
당신이 사용할 수있는
12.is_a? Numeric
( Numeric
정수 및 부동 소수점에서 작동합니다.)
유효한 숫자의 표현을 포함 할 수있는 문자열로 도착하면 다음을 사용할 수 있습니다.
class String
def valid_float?
true if Float self rescue false
end
end
그리고 '12'.valid_float?
당신이 (예를 들어있는 유효한 float로 문자열을 변환 할 수있는 경우에 true를 돌려줍니다 to_f
).
답변
요즘은 보통 Integer와 Float 만 사용합니다.
1.9.2p320 :001 > foo = "343"
=> "343"
1.9.2p320 :003 > goo = "fg5"
=> "fg5"
1.9.2p320 :002 > Integer(foo) rescue nil
=> 343
1.9.2p320 :004 > Integer(goo) rescue nil
=> nil
1.9.2p320 :005 > Float(foo) rescue nil
=> 343.0
1.9.2p320 :006 > Float(goo) rescue nil
=> nil
답변
다음을 추가 할 수 있습니다.
validates_numericality_of :the_field
모델에서.
참조 : http://api.rubyonrails.org/classes/ActiveRecord/Validations/ClassMethods.html#M002172
답변
문자열을 두 번 변환하십시오.
num = '12'
num == num.to_i.to_s
#=> true
num = '3re'
num == num.to_i.to_s
#=> false
답변
나는 이것을 제안 할 것이다
def is_number?
self.to_f == self
end
> 15.is_number?
=> true
> 15.0.is_number?
=> true
> 'Not a number'.is_number?
=> false
> (0/0.0).is_number?
=> false
답변
irb(main):005:0> 1.1.is_a? Numeric
=> true
irb(main):006:0> 1.is_a? Numeric
=> true
irb(main):007:0> 'asd'.is_a? Numeric
=> false