Google マップ ジオコーダーで緯度と経度を自動的に取得するアプリがあります。他のフィールド検証と組み合わせるカスタム検証を作成したいと考えています。以下は私のコードです:
# lib/ext/string.rb
class String
def valid_float?
# The double negation turns this into an actual boolean true - if you're
# okay with "truthy" values (like 0.0), you can remove it.
!!Float(self) rescue false
end
end
# config/application.rb
require 'ext/string'
# post.rb
validate :check_point
def check_point
if !(lat || lng).valid_float?
...
end
end
私のPost
フォームでは、firebug を使用してフィールドに入力asdf
しましたが、メソッドが見つからないというエラーが返されました。:lat
valid_float?
次に、デバッグを試みます。
abort(lat.to_s.valid_float?) # 0.0 true
:lat
フィールドに入力された数字以外の文字は0.0
、私がto_s
それを行うとなるようです。しかし、to_s
それが機能する唯一の方法valid_float?
です。to_s
すべてのテキストを に変換するのはなぜ0.0
ですか?
私もrails c
テストしました:
"1.234234".valid_float? # true
"asdf".valid_float? # false
"0.0".valid_float? # true
それを機能させるにはどうすればよいですか?ありがとう。