2012-03-13 3 views
0

나는이 검증 있습니다크롬에서 수량 유효성 검사를 건너 뛰는 이유가 무엇인가요?

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

이 파이어 폭스에서 잘 작동을하지만, 크롬에 numericality 유효성 검사가 작동하지 않습니다. 23ab을 쓰면 23으로 저장되며 오류가 표시되지 않습니다. HTML5의 태그 입력 유형 번호 때문에 가능합니까?

답변

1

조치로 실제로 수신 된 매개 변수 (예 : development.log)를 확인하고 컨트롤러에 실제로 전송 된 내용을 params 해시로 게시하십시오.

모델의 유효성 검사는 브라우저가 양식 데이터를 전송 한 후 데이터베이스에 저장/업데이트되기 전에 서버 측에서 수행됩니다. 따라서 서로 다른 두 브라우저의 정확한 입력 결과가 서로 다른 유효성 검사 결과를 생성하는 경우 브라우저에서 컨트롤러 동작에 의해 수신되기 전에 브라우저에 의해 수정 될 가능성이 큽니다.

다른 말로하면 : 건너 뛰는 유효성 검사가 아니라 적어도 수정 될 입력 데이터입니다. 실제로 귀하의 params 해시를 확인하고 집으로 돌아갈 수 있습니다.

+0

맞습니다. Chrome의 기본 동작이어야합니다. 나는 '2a'라고 쓰고 입력 바깥 쪽을 클릭하면 양식을 보내기 전에 자동으로 '2'가됩니다. – josebailo

+0

또한 Rails가보기에 제공되어 전송되기 전에 형식을 지정하도록 Chrome이 해당 필드에서 응답하는 일부 종류의 메타 데이터를 자동으로 생성 할 수 있습니까? 그냥 직감이지만, 그렇게했다면 멋지다. – jefflunt

관련 문제