5

デフォルトでは rails.model.to_json を呼び出します

次のように表示されます。

{"name":["can't be blank"],"email":["can't be blank"],"phone":["can't be blank"]}

メッセージの代わりに、サービス クライアントで使用できるステータス コードを生成する必要があります。

[{"field": "name", "code": "blank"}, {"field": "email", "code": "blank"}]

このアプローチは、github api v3 エラーと非常によく似ています - http://developer.github.com/v3/

Railsでこれを達成するにはどうすればよいですか?

4

2 に答える 2

0

コントローラーで、出力をレンダリングするときに、JSON コンテンツの場合は、次を追加します。

render :json => @yourobject, :status => 422 # or whatever status you want.

お役に立てれば

于 2011-08-23T09:50:23.177 に答える
0

モデルでは、json の動作方法を変更できます。たとえば、ActiveRecord モデルがあるとしますContact。オーバーライドas_jsonしてレンダリング動作を変更できます。

def Contact < ActiveRecord::Base

  def as_json
    hash = super

    hash.collect {|key, value|
      {"field" => key, "code" => determine_code_from(value)} 
    }
  end

end

もちろん、コントローラー上Contactまたはコントローラー内の別のメソッドで json を生成することもできます。render メソッドを少し変更するだけで済みます。

render @contact.as_my_custom_json
于 2011-08-23T18:02:18.373 に答える