2012-03-13 5 views
0

私はこの検証を持っている:Chromeで数値の検証がスキップされるのはなぜですか?

validates :year, :presence => true, :numericality => { :only_integer => true }, :uniqueness => true 

これはFirefoxで正常に動作しますが、Chromeでnumericalityの検証が機能していません。 23abと書くと、23という名前で保存され、エラーは表示されません。 HTML5のタグ入力タイプ番号のためにできますか?

答えて

1

アクションで実際に受け取ったパラメータ(つまり、development.logを確認)を確認し、コントローラに実際に送信されているものに関する情報をparamsハッシュに投稿してください。

モデルの検証は、ブラウザがフォームデータを送信した後、データベースに保存/更新される前にサーバー側で行われます。したがって、2つの異なるブラウザからの同じ入力が異なる検証結果を生成する場合、コントローラアクションによってブラウザが受け取る前に、おそらくブラウザによって変更されている可能性があります。

別の言い方をすれば、それはスキップされる検証ではなく、少なくとも最も可能性が高い入力データです。実際に何があなたのparamsハッシュになっているかを調べて、あなたは家に帰るでしょう。

+0

あなたは正しく、Chromeのデフォルトの動作でなければなりません。私は '2a'と書いて入力の外側をクリックすると、フォームを送る前に自動的に' 2'になります。 – josebailo

+0

また、Railsがビューに入力されて送信される前にフォーマットするために、そのフィールドで(検証のために)Chromeが応答する何らかのメタデータを自動生成することも可能ですか?ちょうど勘違いですが、そうした方が涼しいです。 – jefflunt

関連する問題