Ruby on rails Rails对json问题作出响应

Ruby on rails Rails对json问题作出响应,ruby-on-rails,ruby-on-rails-3,json,Ruby On Rails,Ruby On Rails 3,Json,我正在上传HTML5,遇到了一个我似乎无法解决的问题。以下面的代码为例: if @image.save render :json => {:status => "Successfully uploaded image!"} else render :json => {:status => "Something went wrong with your upload!"} end 这是可行的,而且它确实做了它应该做的。但是,当我添加respond_以捕获H

我正在上传HTML5,遇到了一个我似乎无法解决的问题。以下面的代码为例:

if @image.save
    render :json => {:status => "Successfully uploaded image!"}
else
    render :json => {:status => "Something went wrong with your upload!"}
end
这是可行的,而且它确实做了它应该做的。但是,当我添加respond_以捕获HTML请求时,它完全失败(尽管HTML部分可以工作)

有什么想法吗?我觉得我忽略了一些简单的事情。谢谢

编辑-问题已解决


我觉得这是我一直忽视的一件愚蠢的事情。原来请求是HTML,而不是JSON,这是因为上传要求内容类型为多部分/表单数据,因此响应触发HTML。

您需要将响应呈现为JSON

# old
format.json {render :status => "Successfully uploaded image!"}

# new
format.json { render(:json => { :status => "Successfully uploaded image!" }) }

Render需要一个状态代码,因此以下操作不起作用

format.json {render :status => "Something went wrong with your upload!"}
你可以这样写

format.json {render :error => "Something went wrong with your upload!", :status => :bad_request }

Firebug只是显示:JSON.parse:意外字符返回window.JSON.parse(数据);
format.json {render :error => "Something went wrong with your upload!", :status => :bad_request }