【问题标题】:AbstractController::DoubleRenderError in rails 3Rails 3 中的 AbstractController::DoubleRenderError
【发布时间】:2011-08-04 13:08:07
【问题描述】:

我总是收到以下错误:

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

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

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

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

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

【问题讨论】:

    标签: ruby-on-rails-3 redirect


    【解决方案1】:

    这看起来像是某种辅助函数,而不是控制器动作。在这种情况下,您可能在一个操作中调用了两次calc_next,或者在同一操作中从其他地方调用render / redirect_to。请记住renderredirect_to 不要 立即导致控制器返回。

    检查您的控制路径是否可以同时调用calc_next 和从其他地方调用renderredirect_to(或从第二次调用calc_next)。

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

    【讨论】:

    • 酷,谢谢,你给了我正确的提示,next_next() 函数已经集成了重定向动作......
    【解决方案2】:

    是否有任何before_filters 可能正在呈现或重定向?

    【讨论】:

      【解决方案3】:

      您还有两种选择:

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

      【讨论】:

        猜你喜欢
        • 2016-01-28
        • 2015-11-27
        • 2014-07-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多