首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何操作Rails控制器操作中的响应状态代码

如何操作Rails控制器操作中的响应状态代码
EN

Stack Overflow用户
提问于 2011-02-27 17:40:08
回答 2查看 6.2K关注 0票数 3

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

我尝试了响应.headers‘status’= 200,response.status 200,render :json => 'data',:status => 200。但是响应的状态码不会改变。

代码语言:javascript
代码运行次数:0
运行
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-27 18: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; }

票数 5
EN

Stack Overflow用户

发布于 2011-02-27 18:17:28

AJAX调用期望响应的格式是什么?您只响应超文本标记语言和可扩展标记语言,所以如果它期望的是JavaScript或JSON,这可能是一个问题。

此外,我不确定这是否重要,但我从来没有见过像您所展示的那样在respond_to块中出现的条件。通常是这样的:

代码语言:javascript
代码运行次数:0
运行
复制
if @medium.save
  respond_to { |format| ... }
else
  respond_to { |format| ... }
end

我也不清楚"MARK“应该是什么。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5132448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档