Sinatra发送报头和正文



我从一个web联系表单发布到sinatra。效果很好。我需要设置自定义标头,因为它是一个CORS请求,它的工作也很完美。

但是当我想返回一个json的回复请求:状态和:消息,我似乎发送一个sinatra对象,而不是正确的json。

如果我在日志中看到打印出来的消息,则消息不在正文中,而是在标题中。

代码片段:

    headers 
      "Access-Control-Allow-Origin" => "*",
      "Access-Control-Allow-Methods" => "POST",
      "Access-Control-Allow-Headers" =>  "Content-Type",
      "Access-Control-Max-Age" => "86400"
    if params[:email].empty?
      response[:status] = "error"
      response[:message] = "No email"
      p response.inspect
      body response.to_json
    elsif params[:mailbody].empty?
      response[:status] = "error"
      response[:message] = "No message?"
      body response.to_json
    elsif
...

日志文件

"#<Sinatra::Response:0x007fc62bfed2f8 @status=200, @header={"Content-Type"=>"application/json", "Access-Control-Allow-Origin"=>"*", "Access-Control-Allow-Methods"=>"POST", "Access-Control-Allow-Headers"=>"Content-Type", "Access-Control-Max-Age"=>"86400", :status=>"error", :message=>"No email"}, @chunked=false, @writer=#<Proc:0x007fc62bfecf88@/Users/gtheys/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/rack-1.5.2/lib/rack/response.rb:27 (lambda)>, @block=nil, @length=0, @body=[]>"
127.0.0.1 - - [01/Aug/2014 10:48:57] "POST / " 200 39 0.0077

问题解决

删除:

response[:status] = "error"
response[:message] = "No email"

添加:

{:status => "error", :message => "No email"}.to_json

可以

最新更新