2010-07-28 28 views
12

我试图返回一个空的身体200状态,但铁轨返回一个单一的空间身体。即内容长度1如何在轨道中返回真正空的物体?即内容长度0

例如,该代码生成体与单空间

respond_to do |f| 
    f.html {head :ok} 
end 

也是如此此

respond_to do |f| 
    f.html {render :nothing => true} 
end 

是的,即使渲染:没有什么东西产生。

所有这些似乎都是从2005年的补丁中导出的,它被设计用来修复Safari中的一个错误,如果主体为空,它将忽略头文件。 (http://dev.rubyonrails.org/changeset/1818

有没有人有任何想法如何获得200状态,但与真正的空身体?背景:我正在使用调用我的控制器的API。我需要发送一个200,但单个空间主体导致API发生故障(解析错误...)。另外,我将部署到Heroku,因此我无法修补ActionPack以撤消2005年的黑客攻击。

感谢您的任何想法。

回答

26

这似乎工作

render :text => "" 

对于Rails 3中,你可以使用:

render :nothing => true

在Rails 5,render :nothing => true被弃用(计划在5.1去除)

使用

def action 
    head :ok 
end 

对于Rails 5解决方案,请登录this question

+0

这也适用于我!你真棒!感谢您的快速响应。我喜欢你的回答如何超级简单。 – rhh 2010-07-28 09:34:02

+2

'render:nothing => true'用rails 3.2.13返回内容长度为1。 – 2013-06-26 18:01:28

+0

Rails 4答案在这里:http://stackoverflow.com/questions/4632271/render-nothing-true-returns-empty-plaintext-file – rmcsharry 2016-06-02 16:33:53