我总是收到以下错误:
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
我没有在这个重定向中看到问题,因为外部的一个很好。即使使用调试器,也不会同时有两个重定向...
感谢任何帮助...... 马库斯
答案 0 :(得分:3)
这看起来像某种辅助函数而不是Controller动作。在这种情况下,您可能在一个操作中两次调用calc_next
,或者在同一操作中的其他位置调用render
/ redirect_to
。请注意,render
和redirect_to
不会立即导致Controller返回。
检查您的控制路径是否同时可以呼叫calc_next
并从其他地方(或从第二次呼叫转移到render
)呼叫redirect_to
或calc_next
。
如果您发布了正在进行的控制器操作,我们可以提供更好的帮助。
答案 1 :(得分:0)
是否有可能正在呈现或重定向的before_filter
?
答案 2 :(得分:0)
您还有两个选择:
重定向...并返回 渲染...并返回