Ruby on rails 3 AbstractController::rails 3中的DoubleRenderError

Ruby on rails 3 AbstractController::rails 3中的DoubleRenderError,ruby-on-rails-3,redirect,Ruby On Rails 3,Redirect,我总是遇到以下错误: AbstractController::DoubleRenderError(渲染和/或重定向被删除) 在此操作中多次调用。请注意,您可能仅 调用render或redirect,每个操作最多调用一次 重定向和渲染都不会终止操作的执行,因此如果 如果要在重定向后退出某个操作,则需要执行某些操作 例如“将_重定向到(…)并返回”: 错误发生时,第一次id为零,但第二次不是 def calc_next id = next() if id.nil? id = next

我总是遇到以下错误:

AbstractController::DoubleRenderError(渲染和/或重定向被删除) 在此操作中多次调用。请注意,您可能仅 调用render或redirect,每个操作最多调用一次 重定向和渲染都不会终止操作的执行,因此如果 如果要在重定向后退出某个操作,则需要执行某些操作 例如“将_重定向到(…)并返回”:

错误发生时,第一次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
我看不出这个重定向有什么问题,因为外部重定向很好。即使使用调试器,也不会同时有两个重定向

感谢您的帮助。。。
Markus

这看起来像某种辅助功能,而不是控制器操作。在这种情况下,您可能会在一个操作中调用两次
calc\u next
,或者在同一操作中从其他地方将
render
/
重定向到
。请记住,
render
redirect\u to
不会立即导致控制器返回

检查控制路径是否可以同时调用
calc\u next
和调用
render
redirect\u到其他地方(或从第二次调用到
calc\u next


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

在\u filter
之前是否有可能渲染或重定向的

重定向。。。返回
提供。。。return

很酷,谢谢,你给了我完全正确的提示,next_next()函数已经集成了重定向操作。。。