Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何从Rails控制器操作操作响应状态代码_Ruby On Rails - Fatal编程技术网

Ruby on rails 如何从Rails控制器操作操作响应状态代码

Ruby on rails 如何从Rails控制器操作操作响应状态代码,ruby-on-rails,Ruby On Rails,给定一个典型的控制器动作。看看这个标记。我需要将响应的状态代码设置为200。背景:swfupload一个ajax文件上传解决方案似乎以错误的格式发送数据 我尝试了response.headers['Status']=200,response.Status 200,render:json=>data',:Status=>200。但是响应的状态代码没有改变 def create if params[:Filedata] @medium = Medium.new(:swf_uploaded

给定一个典型的控制器动作。看看这个标记。我需要将响应的状态代码设置为200。背景:swfupload一个ajax文件上传解决方案似乎以错误的格式发送数据

我尝试了response.headers['Status']=200,response.Status 200,render:json=>data',:Status=>200。但是响应的状态代码没有改变

def create
  if params[:Filedata]
    @medium = Medium.new(:swf_uploaded_data => params[:Filedata])
  else
    @medium = Medium.new(params[:medium])
  end

  respond_to do |format|      
    if @medium.save  
      format.html { redirect_to(@medium, :notice => 'Medium was successfully created.'); }
      format.xml  { render :xml => @medium, :status => :created, :location => @medium; }        
      MARK
    else
      format.html { render :action => "new" }
      format.xml  { render :xml => @medium.errors, :status => :unprocessable_entity }
    end
  end
end

AJAX调用需要什么格式的响应?您只响应HTML和XML,所以如果它需要JavaScript或JSON,那可能是个问题

此外,我不确定这是否重要,但我从未见过
respond\u to
块中出现您所示的情况。通常是这样的:

if @medium.save
  respond_to { |format| ... }
else
  respond_to { |format| ... }
end

我也不清楚“标记”应该是什么。

状态代码只能在诸如render、redirect\u to…等返回命令中声明。。。。并且将影响此返回命令,无法为所有响应设置代码

对于
format.html{redirect_to(@medium,:notice=>“medium已成功创建”);}
由于是重定向,因此代码将是3XX,您无法更改它,或者重定向无法工作

对于
format.xml{render:xml=>@medium,:status=>:created,:location=>@medium;}
您将状态声明为created,这意味着对于rails,代码为201,将其更改为200:

format.xml{render:xml=>@medium,:status=>:ok,:location=>@medium;}

文档链接:“状态选项”可以简单地使用
render:status=>500