给出经典的控制器动作。看看MARK。我需要为响应设置状态代码为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
答案 0 :(得分:5)
状态代码只能在render,redirect_to等返回命令中声明,并且会影响到这个返回命令,没有办法为所有响应设置代码
对于format.html { redirect_to(@medium, :notice => 'Medium was successfully created.'); }
,因为是重定向,代码将是3XX,您无法更改或重定向无法正常工作
对于format.xml { render :xml => @medium, :status => :created, :location => @medium; }
,您声明状态为已创建,这意味着对于代码为201的rails,将其更改为200:
format.xml { render :xml => @medium, :status => :ok, :location => @medium; }
答案 1 :(得分:0)
AJAX调用期望采用什么格式?你只是回应HTML和XML,所以如果它需要JavaScript或JSON,那可能是个问题。
另外,我不确定这是否重要,但我从未在respond_to
区块中看到过如你所示的情况。通常就是这样:
if @medium.save
respond_to { |format| ... }
else
respond_to { |format| ... }
end
我也不清楚“MARK”应该是什么。