2013-02-11 4 views
3

Я борюсь с этой проблемой в течение последних 4 часов. Всякий раз, когда я отправляю запрос POST без аргументов (body = "{}"), я получаю ответ с 406 кодом ошибки HTTP-статуса.Рельсы Статус 406 Ответ POST

Мой контроллер выглядит просто как

def resetFixture 

    respond_to do |format| 
     format.json { render :json=>final_obj, :status=>:ok} 
    end 
    end 

Маршруты:

match 'TESTAPI/resetFixture' => 'users#resetFixture', :via => :post 

Я пытаюсь вернуть ответ JSON с "{ERRCODE: 1}"

Если я запрос curl с -d "", я получаю ответ, который я хочу, но как я могу исправить этот код ошибки? Я, похоже, уже указал JSON и статус.

Это может быть более понятным, если я включил журналы отладки с сервера для неисправного запроса:

+0

Вы можете разместить точный URL, на который вы отправляете сообщение? – Max

+0

Я отправляю на localhost: 3000/TESTAPI/resetFixture – Andy

+0

Вам нужно отправить сообщение на «localhost: 3000/TESTAPI/resetFixture.json' – Max

ответ

2

Поскольку вы не можете запросить resetFixture.json, то вам нужно добавить следующий заголовок к вашему запросу :

Accept: application/json

Это покажет рельсы, которые вы хотите JSON обратно.

Вы можете проверить это с завитком, добавив следующий аргумент: -H "Accept: application/json"

В качестве альтернативы, если вы хотите Rails всегда использовать JSON вы можете изменить свой маршрут:

match 'TESTAPI/resetFixture' => 'users#resetFixture', :via => :post, :defaults => { :format => 'json' }