5

ruby on rails で入力フィールドを検証しています。ユーザーがこれらのフィールドに入力または入力したかどうかを確認します。フィールドが入力されていない場合、フィールドが入力されていないnameことを示すエラーメッセージをユーザーに送信しますname。他のエラーも同様です。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/

現在、jsonデータをクライアントに送信している方法は次のとおりです

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

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

2 に答える 2

15

最も簡単な方法は、エラーのハッシュを送信することです。

それで:

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

:status => 420jquery の $.ajax メソッドなどでエラー コールバックを呼び出す必要があることに注意してください。また、エラーが発生したときに 200 ステータス (デフォルト) を返すべきではありません。

于 2012-07-23T06:37:07.467 に答える
1

http ステータス コードを使用して、ユーザーに何が起こっているかを伝える必要があるため、無効なレコードには

420 Invalid Record  Record could not be saved

そして、JSON リターンには、アクティブなレコード/アクティブなモデルのエラー メッセージを返すエラー メッセージが含まれ、詳細情報が提供されます。

于 2012-07-23T06:31:44.247 に答える