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

Sea*_*ner 2 ruby ruby-on-rails

在我的控制器中我有:

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
Run Code Online (Sandbox Code Playgroud)

在我的ApplicationController中,我有:

def access_denied
  redirect_to message_path, :alert => 'Access Denied'
end
Run Code Online (Sandbox Code Playgroud)

在大多数情况下,我总是希望在case语句之后重定向到good_place_path.

偶尔,我想拒绝访问并将其留在那里.有没有办法可以打电话

acccess_denied
Run Code Online (Sandbox Code Playgroud)

从我的控制器,然后不返回到调用控制器(或者它尝试进行第二次重定向,因此我得到DoubleRenderError).我明白我可以放

redirect_to good_place_path       
Run Code Online (Sandbox Code Playgroud)

在每个when语句中,但我想知道是否有更优雅的解决方案.

谢谢.

肖恩

Ste*_*oss 5

添加return后的redirect_to作品所以将它添加后access_denied应正常工作.你基本上不希望落到渲染,这是默认的.