2012-07-23 4 views
5

ruby ​​on rail에서 입력 필드의 유효성을 검사하고 있습니다. 사용자가이 필드를 입력했는지 채웠는지 확인합니다. 만약 name 필드가 채워지지 않는다면 name 필드가 채워지지 않았다는 표시와 함께 오류 메시지를 사용자에게 보냅니다. 다른 오류도 마찬가지입니다. 레일즈에서 루비를 사용하여 json에서 어떻게 이런 종류의 메시지를 보낼 수 있습니까?ruby ​​on rails를 사용하여 json에서 오류 메시지를 보내고 있습니다.

내가 지금하고있는 일이 여기에 있습니다. 나는 현재 클라이언트로 JSON 데이터를 보내고 방법

이 모델 여기

validates :email, :name, :company, :presence => true 
validates_format_of :email, :with => /\A[a-z0-9!#\$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#\$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\z/ 

이다

@contacts = Contact.new(params[:contact]) 

if @contacts.save 
    render :json => { :error => 0, :success => 1 } 
else 
    render :json => { :error => 1, :success => 0 } 
end 

답변

1
당신은 정말 잘못된위한, 그래서 무슨 일이 일어나고 있는지 사용자에게 HTTP 상태 코드를 사용한다

거기에 레코드가 있습니다.

420 Invalid Record Record could not be saved 

그런 다음 JSON 반환시 오류 메시지가 표시 될 수도 있습니다. 활성 레코드/활성 모델 오류 메시지를 리턴하여 더 자세한 정보를 제공합니다.

+2

420은 표준의 일부가 아니기 때문에 이것은 실제로 HTTP 422 여야합니다. (http://en.wikipedia.org/wiki/List_of_HTTP_status_codes#420) – awendt

15

가장 간단한 방법은 오류 해시를 보내는 것입니다.

너무 : :status => 420이 자신의 오류 콜백을 호출 jQuery의 $ 아약스 방법 같은 것들을 만들 필요하며 오류가있을 때 200 개 상태 (기본값)을 반환해서는 안

render :json => { :errors => @contacts.errors.as_json }, :status => 420 

참고.

+3

420은 HTTP 422와 같아야합니다. 표준 (http://en.wikipedia.org/wiki/List_of_HTTP_status_codes#420) – awendt

관련 문제