Подтвердить что ты не робот

Сервер POST json to rails

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.

Любые предложения?

4b9b3361

Ответ 1

Если вы отправляете правильные заголовки, вам не нужно будет делать "ActiveSupport:: JSON.decode" - рельсы сделают это для вас.

Вам нужно будет установить следующие заголовки в своем сообщении.

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

A 422 означает Unprocessable Entity --- обычно происходит сбой проверки.

Вы должны уметь иметь. Если вы не можете, то ваши заголовки установлены неправильно.

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