2
在我的控制,我有:有没有办法停止执行调用方法来避免Rails中的DoubleRenderError?
def update
case params[:something]
when 'x'
if all_is_good
good_stuff_happens
flash[:notice] = "Good stuff happened"
else
access_denied
end
when 'y'
other_good_stuff_happens
flash[:notice] = "Other good stuff happened"
when 'z'
even_more_good_stuff_happens
flash[:notice] = "Even more good stuff happened"
end
redirect_to good_place_path
end
在我的ApplicationController我:
def access_denied
redirect_to message_path, :alert => 'Access Denied'
end
在大多数情况下,我总是想redirect_to的case语句后good_place_path。
偶尔,我想拒绝访问权限并将其留在那。有没有一种方法,我可以叫
acccess_denied
从我的控制器
再没有返回给呼叫控制器(或者它试图做了第二次重定向,因此我得到的DoubleRenderError)。我知道我可以只把
redirect_to good_place_path
在每个when语句,但我想知道是否有更优雅的解决方案。
谢谢。
肖恩
谢谢Steve.I试图在access_denied方法的redirect_to之后直接返回,但它仍然是双重渲染的,因为它现在回到update方法并且仍在处理中。然后我尝试了你的第二个建议,并且工作正常。我实际上结束了:access_denied &&返回 – 2010-11-05 01:10:15
是的,'rendering_method和return'在Rails中非常习惯。 – 2010-11-05 02:33:23