给出了一个经典的控制器动作。看一下这个标记。我需要将响应的状态代码设置为200。背景: ajax文件上传解决方案swfupload似乎以错误的格式发送数据。
我尝试了响应.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
发布于 2011-02-27 10:18:13
状态码只能在return命令中声明,如render、redirect_to……并将影响此返回命令,因此无法为所有响应设置代码
对于format.html { redirect_to(@medium, :notice => 'Medium was successfully created.'); }
,因为是重定向,所以代码将是3XX,您不能更改它,否则重定向将不起作用
对于format.xml { render :xml => @medium, :status => :created, :location => @medium; }
,您将状态声明为created,这意味着对于rails,代码为201,将其更改为200:
format.xml { render :xml => @medium, :status => :ok, :location => @medium; }
发布于 2011-02-27 10:17:28
AJAX调用期望响应的格式是什么?您只响应超文本标记语言和可扩展标记语言,所以如果它期望的是JavaScript或JSON,这可能是一个问题。
此外,我不确定这是否重要,但我从来没有见过像您所展示的那样在respond_to
块中出现的条件。通常是这样的:
if @medium.save
respond_to { |format| ... }
else
respond_to { |format| ... }
end
我也不清楚"MARK“应该是什么。
https://stackoverflow.com/questions/5132448
复制相似问题