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