def create
req = ActiveSupport::JSON.decode(request.body)
if user = User.authenticate(req["email"], req["password"])
session[:user_id] = user.id
render :json => "{\"r\": \"t\"}" + req
else
render :json => "{\"r\": \"f\"}"
end
end
'create' メソッドはコントローラー内にあり、"/login" にマップされています。正しいコンテンツ タイプを設定し、curl クライアントからヘッダーを受け入れています。常に 422 http ステータス応答が返されます。
助言がありますか?
ベストアンサー1
正しいヘッダーを送信する場合は、「ActiveSupport::JSON.decode」を実行する必要はありません。Rails が自動的に実行します。
投稿に次のヘッダーを設定する必要があります。
Content-Type: application/json
Accept: application/json
422 は処理できないエンティティを意味します。通常は検証に失敗したことを意味します。
できるはずです。できない場合は、ヘッダーが正しく設定されていません。
def create
if user = User.authenticate(params["email"], params["password"])
session[:user_id] = user.id
render :json => "{\"r\": \"t\"}" + req
else
render :json => "{\"r\": \"f\"}"
end
end