我的控制器中有以下代码:
def new
if @cart.line_items.empty?
redirect_to store_url, notice: 'Your cart is empty'
return
end
@order = Order.new
end我有以下问题:
redirect_to语句时会发生什么?它是否将控件传递给存储控制器并停止执行操作new?它执行return和Order.new语句吗?return语句的目标是什么?发布于 2013-11-12 09:14:54
redirect_to只是一个方法调用。它注意到控制器动作希望在动作完成后发出HTTP 302 (而不是呈现某些视图)。在redirect_to方法返回后,该操作继续执行,因此它不会完全传递控制流。
因此,您需要在计划在return中重定向之后,在这里使用redirect_to来停止该操作的执行。如果省略了return,则在重定向发生之前将执行Order.new语句。
发布于 2013-11-12 09:12:14
它会触发对您的new服务器的新请求。
它不是从一个控制器传递到另一个控制器,而是告诉浏览器转到另一个控制器。所以这不是你的应用程序的内部。
重定向是在控制器到达return之后发生的。
在这种情况下,您必须显式地告诉控制器您已经完成了
发布于 2013-11-12 09:13:28
redirect_to
返回
https://stackoverflow.com/questions/19924961
复制相似问题