1

これは、動作中および非動作中のステータスに関連付けられた json 応答を送信するためのコードです。他のリソースに関する推奨事項はありますか? これは機能していません。ありがとうございました。

if @content.destroy
  format.json { redirect_to @collection, status: :destroyed, notice 'Content was removed from collection.' }, :status => 200
else
  format.json { render json @content.errors, status: :unprocessable_entity }, :status => 400
end
4

1 に答える 1

-1

TL;DR: JS フレームワークを使用している場合は、そのフレームワークが成功と失敗の応答をどのように見せたいかを調べてください。

長いバージョン:

Rails から Web アプリに応答を返すには、いくつかの方法があります。Rails はデフォルトで、リクエストが成功した場合はステータス コード 2xx を返し、リクエストが失敗した場合は 4xx を返します。Extjs などの一部の Web フレームワークは、常に 200 コードの応答を受け取り、応答の成功キーを見て、要求が成功したかどうかを確認します。XHR を利用する独自の JS を作成している場合は、やりたいことが何でもできます。API をどのように設計するかはあなた次第です。200 コードでサーバーから json 応答を返し、成功キーを true または false に設定すると便利だと思うので、コールバック JS で次のように記述できます。

if(request.data.success){
  successfulPost(response);
} else {
  failed(response);
}

私がこのアプローチを好む理由の 1 つは、例外が発生した場合、例外を引き起こしたコードのバグではなく、検証エラーのためにレコードが保存されていないことを実際に区別できることです。しかし、それは個人的な好みであり、エラーはエラーであり、何が原因であるかは問題ではないと主張する人もいるかもしれません.

于 2013-09-19T21:03:43.887 に答える