Post json vers le serveur rail

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

la méthode 'create' est dans un controller et mappée à "/login", je configure les types de contenu corrects et accepte les en-têtes de mon client curl. Je reçois une réponse de statut http 422 tout le temps.

des suggestions?

25
demandé sur grifaton 2011-02-06 19:59:07
la source

1 ответов

si vous envoyez les en-têtes de droite, alors vous n'aurez pas besoin de faire "ActiveSupport::JSON.décoder -- les rails le feront pour vous.

vous aurez besoin de mettre les en-têtes suivants à votre poste.

Content-Type: application/json
Accept: application/json

a 422 signifie Entité non traitable - - - généralement qu'il y a eu un échec de validation.

vous devriez pouvoir l'avoir. Si vous ne pouvez pas, alors vos en-têtes ne sont pas positionnés correctement.

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
45
répondu Jesse Wolgamott 2012-10-04 13:23:44
la source

Autres questions sur