2012-07-23 35 views
5

ruby​​ on railsで入力フィールドを検証しています。ユーザーがこれらのフィールドに入力したかどうかを確認します。 「name」フィールドが満たされていないとした場合、nameフィールドが入力されていないことを示すエラーメッセージをユーザーに送信します。他のエラーも同じです。 Ruby on Railsを使ってjsonでこの種のメッセージをどのように送ることができますか?ruby​​ on railsを使用して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/ 

私は現在、あなたが本当に無効のため、何が起こっているかをユーザーに伝えるためにHTTPステータスコードを使用する必要があり、クライアント

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

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

答えて

1

にJSONデータを送信しています方法ですレコードがあります

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

これは本当にHTTP 422でなければなりません。標準(http://en.wikipedia.org/wiki/List_of_HTTP_status_codes#420) – awendt

関連する問題