有没有办法停止执行调用方法以避免Rails中的DoubleRenderError?

时间:2010-11-04 17:50:03

标签: ruby-on-rails ruby

在我的控制器中我有:

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语句中,但我想知道是否有更优雅的解决方案。

感谢。

肖恩

1 个答案:

答案 0 :(得分:5)

return工作后添加redirect_to,以便在access_denied之后添加{{1}}。你基本上不想陷入渲染,这是默认的。