在我的控制器中我有:
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
在大多数情况下,我总是希望在case语句之后重定向到good_place_path。
偶尔,我想拒绝访问并将其保留。有没有办法可以打电话
acccess_denied
从我的控制器,然后不返回到调用控制器(或者它尝试进行第二次重定向,因此我得到DoubleRenderError)。我明白我可以把
redirect_to good_place_path
在每个when语句中,但我想知道是否有更优雅的解决方案。
感谢。
肖恩
答案 0 :(得分:5)
在return
工作后添加redirect_to
,以便在access_denied
之后添加{{1}}。你基本上不想陷入渲染,这是默认的。