首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >处理redirect_to

处理redirect_to
EN

Stack Overflow用户
提问于 2013-11-12 09:06:19
回答 4查看 82关注 0票数 0

我的控制器中有以下代码:

代码语言:javascript
复制
def new
  if @cart.line_items.empty?
    redirect_to store_url, notice: 'Your cart is empty'
    return
  end

  @order = Order.new
end

我有以下问题:

  1. 当控制器执行redirect_to语句时会发生什么?它是否将控件传递给存储控制器并停止执行操作new?它执行returnOrder.new语句吗?
  2. 这里的return语句的目标是什么?
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-11-12 09:14:54

redirect_to只是一个方法调用。它注意到控制器动作希望在动作完成后发出HTTP 302 (而不是呈现某些视图)。在redirect_to方法返回后,该操作继续执行,因此它不会完全传递控制流。

因此,您需要在计划在return中重定向之后,在这里使用redirect_to来停止该操作的执行。如果省略了return,则在重定向发生之前将执行Order.new语句。

票数 1
EN

Stack Overflow用户

发布于 2013-11-12 09:12:14

  • 当控制器执行redirect_to语句时会发生什么?

它会触发对您的new服务器的新请求。

  • 它是否将控件传递给存储控制器,并停止执行新的或非新的操作?

它不是从一个控制器传递到另一个控制器,而是告诉浏览器转到另一个控制器。所以这不是你的应用程序的内部。

  • 它执行返回和Order.new语句吗?

重定向是在控制器到达return之后发生的。

  • 这里返回语句的目标是什么?

在这种情况下,您必须显式地告诉控制器您已经完成了

票数 1
EN

Stack Overflow用户

发布于 2013-11-12 09:13:28

redirect_to

  • 触发对new服务器的新请求。

返回

  • 如果您输入显式返回,那么它允许您提前退出,并且不执行返回关键字后面的返回内容。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19924961

复制
相关文章

相似问题

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