Rails 5 - “在此操作中多次调用渲染和/或重定向”

时间:2017-04-08 03:26:05

标签: ruby-on-rails ruby redirect controller ruby-on-rails-5

更新到Rails 5.0后,我收到以下错误:

“RegistrationController中的AbstractController :: DoubleRenderError #create

在此操作中多次调用渲染和/或重定向。请注意,您只能调用渲染或重定向,每次操作最多一次。另请注意,重定向和渲染都不会终止操作的执行,因此如果要在重定向后退出操作,则需要执行类似“reditect_to(...)并返回”的操作。“

这是我的代码,在我更新之前有效:

def create
  # save record
  if params[:stuff].nil?
    respond_to do |format|
      format.js
    end
  else
    redirect_to root_path
  end
end

我尝试了很多不同的语法,例如:

redirect_to(root_path) and return

redirect_to(root_path)
return

return and redirect_to(root_path)

return redirect_to(root_path)

但是一切都返回相同的错误。有人知道正确的语法吗?

2 个答案:

答案 0 :(得分:3)

您可能会在显示# save-record的位置进行渲染或重定向。

试试这个:

  • 如果您尚未安装{Gempfile},请添加gem byebug,运行bundle进行安装,然后重新启动Rails
  • byebug添加到create方法的开头
  • 从浏览器或命令行调用create,并使用ns逐步执行以进入其他功能。您可能会注意到渲染或重定向被调用两次

答案 1 :(得分:0)

您可以使用performed?来测试或调试双重渲染/重定向。