snipercc 2009-10-27 00:03
浏览 389
已采纳

respond_to和redirect_to之间的区别

一直没有太弄明白关于respond_to 和 redirect_to之前的区别,因为以前的代码大部分都是由rails自动生成的脚手架,在这个基础上在进行一些修改,但是最近想把这些代码都手写一遍,熟悉一下,所以就产生了问题,不知道这两者的区别是什么。查了查文档,是这样写的:

respond_to:

 

respond_to do |format|
      format.html
      format.xml { render xml => @people.to_xml }
end

 上面的代码是说,如果客户端需要从这个action得到一个HTML的响应,就渲染html模板,但是如果客户端需要XML,那么就返回XML格式的数据。(rails根据客户端所提交请求中HTTP accept header来决定响应的类型)

  上面的一段话是我文档当中的解释(当然只是大意,翻译的并不准确,因为还涉及到一些上下文的关联),在文档当中还有这样的一段话,大意是说:如果在应用程序当中不需要web-service的支持,那么就可以用redirect_to将请求重定向到一个action,而如果需要web-service的支持,就需要使用respond_to。不知道我这样的理解是否正确?


问题补充
多谢楼上的解答,但是我确实说的是respond_to和redirect_to之前的区别。
看了楼上在github上面个的Blog,相当Nice
  • 写回答

2条回答 默认 最新

  • turbogears 2009-10-28 08:36
    关注

    respond_to是服务器对客户端请求的响应,所有的响应方式都是在这里处理的。而redirect_to是响应方式之一,respond_to与redirect_to不是一个层次上的东西,所以saberma会问你是不是想问render和redirect_to的区别。

    render是将响应内容直接反馈给客户,而
    redirect_to相当于重定向,要求客户端再次重新发送请求,“新的请求地址就是redirect_to后面的参数了”

    render的另外一个用法容易与redirect_to混淆,就是在controller内部重定向到一个新的action,这种处理方法保持了请求中的params,而redirect_to是一个全新的请求,丢弃了params

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀