Ruby on rails Rails:在使用live update/Faye时如何避免AbstractController::DoubleRenderError?
我正在使用Private Pub,这是一个建立在Faye之上的宝石,通过我的控制器进行实时更新。我很难对实时更新渲染进行回退,以防Faye服务器无法提供服务 如果我的第一个渲染方法失败,是否仍有必要绕过这种情况进行第二次渲染 以下是我的Ruby on rails Rails:在使用live update/Faye时如何避免AbstractController::DoubleRenderError?,ruby-on-rails,ruby,exception-handling,faye,private-pub,Ruby On Rails,Ruby,Exception Handling,Faye,Private Pub,我正在使用Private Pub,这是一个建立在Faye之上的宝石,通过我的控制器进行实时更新。我很难对实时更新渲染进行回退,以防Faye服务器无法提供服务 如果我的第一个渲染方法失败,是否仍有必要绕过这种情况进行第二次渲染 以下是我的创建操作: def create #assigning objects and such happening here begin LiveAjaxRender(@comment) rescue => excep
创建操作:
def create
#assigning objects and such happening here
begin
LiveAjaxRender(@comment)
rescue => exception
ExceptionNotifier.notify_exception(exception)
normalAjaxRender(@comment)
end # end rescue
end
通常,当错误发生时,它应该转到第二个块并忽略第一个块。但这里没有,因为上面说:
user\u comments\create
中出现了AbstractController::DoubleRenderError
:
在此操作中多次调用渲染和/或重定向。
请注意,您最多只能调用render或redirect
每个动作一次。还要注意,重定向和渲染都不会终止
操作的执行,因此如果要在
重定向,您需要执行类似“重定向到(…)和
返回”。app/controllers/my_controller.rb130:in`block
(2级)在normalAjaxRender'中
为了避免渲染的冗余,我做了以下工作:
将normalAjaxRender()
方法设置为默认方法,并在JS
文件中添加rescue
和liveupdate在normalAjaxRender
中尝试进行双重渲染。。从错误消息中可以清楚地看到这一点。检查其中的逻辑。这是我在方法def normalAjaxRender(post)
@post=comment
if@post.save
respond_to do | format |
format.html{}
format.js render:posts}
结束
其他
呈现:新建
结束
结束
确定。。把它放在柱子里。。。在这里,您进入响应,您也在进行渲染。。这是不允许的,因此您出现了错误。@ArupRakshit,谢谢您的解释,我正在尝试使操作do 1呈现而不是两个。如果第一次渲染失败,那么我想让第二次渲染方法工作。也许我的问题还不够清楚,但我想知道如何选择其中一个。