Ruby on rails 轨道5-“;在此操作中多次调用渲染和/或重定向”;
更新到Rails 5.0后,我发现以下错误: “AbstractController::RegistrationController中的DoubleRenderError#创建 在此操作中多次调用了Render和/或redirect。请注意,您只能调用Render或redirect,每个操作最多只能调用一次。还要注意,redirect和Render都不会终止操作的执行,因此,如果您想在重定向后退出操作,则需要执行类似于“reditect_to(…)并返回”的操作 这是我的代码,它在我的更新之前工作:Ruby on rails 轨道5-“;在此操作中多次调用渲染和/或重定向”;,ruby-on-rails,ruby,redirect,controller,ruby-on-rails-5,Ruby On Rails,Ruby,Redirect,Controller,Ruby On Rails 5,更新到Rails 5.0后,我发现以下错误: “AbstractController::RegistrationController中的DoubleRenderError#创建 在此操作中多次调用了Render和/或redirect。请注意,您只能调用Render或redirect,每个操作最多只能调用一次。还要注意,redirect和Render都不会终止操作的执行,因此,如果您想在重定向后退出操作,则需要执行类似于“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)
但所有操作都返回相同的错误。有人知道正确的语法吗?您可能在显示
#save record
的地方进行了渲染或重定向
试试这个:
- 将
添加到gem文件中(如果尚未安装),运行gembyebug
安装它,然后重新启动Railsbundle
- 将
添加到byebug
方法的开头create
- 从浏览器或命令行调用create,并使用
和n
单步执行它以进入其他功能。您可能会注意到渲染或重定向被调用了两次s
重定向到或渲染?试试看:return redirect\u to(root\u path)
@Gerry我添加了完整的操作。该代码也不起作用。由于没有其他重定向到
或渲染
存在,我还建议使用byebug
来定位代码调用第二次渲染的位置。在我的操作中,我没有使用任何其他渲染
或重定向到
的实例。