HTTP POST рельсы 3 - json - ошибка 406 и 500

У меня проблемы с отправкой данных через HTTP REST. Когда я пытаюсь выполнить POST json данные через расширение chrome «Simple REST Client», я получаю внутреннюю ошибку сервера 500 с сообщением «У документа нет действительного корня». Когда я скручиваюсь, я получаю ошибку 406. Но когда я оставляю поле данных пустым как в клиенте, так и в curl, создается пустой документ! Я изменил текст json на все возможные допустимые комбинации и вернул данные, которые производит GET, но не повезло!

Мой код контроллера:

def create
@verify = Verify.new(params[:verify])

respond_to do |format|
  if @verify.save
    format.html { redirect_to( :back, :notice => 'Verified') }
    format.json { render :json => @verify, :status => :created, :location => @verify }
  else
    format.html { render :action => "new" }
    format.xml  { render :xml => @verify.errors, :status => :unprocessable_entity }
    format.json  { render :json => @verify.errors, :status => :unprocessable_entity }
  end
end

конец

Пример json

{"www" : "wwww"}

Я использую драгоценные камни Mongoid и Devise (пытался удалить before_filter из контроллера, но это не имело значения).


person Daniel    schedule 19.08.2011    source источник


Ответы (1)


Rails 3 по умолчанию добавляет корневой элемент в json в activerecord, поскольку вы используете mongoid, попробуйте добавить его в свой mongoid.yml

include_root_in_json: true
person Draiken    schedule 19.08.2011
comment
Добавил код в mongoid.yml, но все равно получаю те же ошибки. Также добавлено self.include_root_in_json = true в модель и @verify.include_root_in_json = true в контроллер, но тоже без изменений. - person Daniel; 20.08.2011
comment
Черт, ты точно проверил, что возвращает render :json => @verify? Вы проверили, что в этом документе нет действительной корневой ошибки в расширении Chrome? Из этого я действительно понятия не имею, что это может быть - person Draiken; 24.08.2011