【问题标题】:HTTP POST rails 3 - json - 406 & 500 errorHTTP POST rails 3 - json - 406 & 500 错误
【发布时间】:2011-08-19 15:06:57
【问题描述】:

我无法通过 HTTP REST 发送数据。当我尝试通过 chrome 扩展“简单 REST 客户端”发布 json 数据时,我收到 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 gems(尝试从控制器中删除 before_filter 但没有任何区别)。

【问题讨论】:

    标签: ruby-on-rails-3 json http rest devise


    【解决方案1】:

    Rails 3 默认在 activerecord 中向 json 添加一个根元素,因为您使用的是 mongoid,请尝试将其添加到您的 mongoid.yml

    include_root_in_json: true
    

    【讨论】:

    • 将代码添加到mongoid.yml,但仍然出现相同的错误。还在模型中添加了self.include_root_in_json = true,在控制器中添加了@verify.include_root_in_json = true,但也没有变化。
    • 该死的,你检查过render :json => @verify返回什么吗?您是否检查过 Chrome 扩展程序上的“文档没有有效根”错误是什么?除此之外,我真的不知道会是什么
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-13
    • 2020-02-04
    相关资源
    最近更新 更多