rails3中的AbstractController :: DoubleRenderError

时间:2011-08-04 13:08:08

标签: ruby-on-rails-3 redirect

我总是收到以下错误:

  

AbstractController :: DoubleRenderError(渲染和/或重定向是   在此操作中多次调用。请注意,您可能只是   调用渲染或重定向,每次操作最多一次。另请注意   既不重定向也不渲染终止执行动作,所以如果   你想在重定向后退出一个动作,你需要做点什么   比如“redirect_to(...)并返回”。):

错误发生时,id为第一次为零,但不是第二次......

def calc_next
  id = next()
  if id.nil?
    id = next_next()
    if id.nil?
      render :layout => false, :format => :js
    else
      redirect_to :action => "view", :id => id, :format => :js
    end
  else
    redirect_to :action => "view", :id => id, :format => :js
  end
end

我没有在这个重定向中看到问题,因为外部的一个很好。即使使用调试器,也不会同时有两个重定向...

感谢任何帮助...... 马库斯

3 个答案:

答案 0 :(得分:3)

这看起来像某种辅助函数而不是Controller动作。在这种情况下,您可能在一个操作中两次调用calc_next,或者在同一操作中的其他位置调用render / redirect_to。请注意,renderredirect_to 不会立即导致Controller返回。

检查您的控制路径是否同时可以呼叫calc_next并从其他地方(或从第二次呼叫转移到render)呼叫redirect_tocalc_next

如果您发布了正在进行的控制器操作,我们可以提供更好的帮助。

答案 1 :(得分:0)

是否有可能正在呈现或重定向的before_filter

答案 2 :(得分:0)

您还有两个选择:

重定向...并返回 渲染...并返回