Rails:如何在使用实时更新/ Faye时避免使用AbstractController :: DoubleRenderError?

时间:2014-06-02 16:47:13

标签: ruby-on-rails ruby exception-handling faye private-pub

我使用私人酒吧,这是一个建立在Faye之上的宝石,通过我的控制器进行实时更新。如果Faye服务器无法提供服务,我很难能够为实时更新渲染做出后备。

如果我的第一个渲染方法失败了,有没有解决这种情况并第二次渲染?

以下是我的create操作:

  def create
    #assigning objects and such happening here

    begin
        LiveAjaxRender(@comment)
    rescue => exception
        ExceptionNotifier.notify_exception(exception)

        normalAjaxRender(@comment)
    end # end rescue
  end

通常在发生错误时,它应该转到第二个块并忽略第一个块。虽然在这里它并不是因为它说:

AbstractController::DoubleRenderError中发生user_comments#create

  

在此操作中多次调用渲染和/或重定向。   请注意,您最多只能调用渲染或重定向   每次行动一次。另请注意,重定向和渲染都不会终止   执行动作,所以如果你想在之后退出动作   重定向,你需要做类似" redirect_to(...)和   返回&#34 ;. app / controllers / my_controller.rb130:在`block中   (2级)在normalAjaxRender'

1 个答案:

答案 0 :(得分:0)

为了避免渲染的冗余,这就是我所做的:

normalAjaxRender()方法设为默认值,并在JS文件中添加rescueliveupdate