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条)

报告相同问题?

悬赏问题

  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题