【发布时间】:2014-06-02 16:47:13
【问题描述】:
我正在使用 Private Pub,它是在 Faye 之上构建的一个 gem,用于通过我的控制器进行实时更新。我无法为实时更新渲染进行回退,以防 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(...) 和 返回”。app/controllers/my_controller.rb130:in `block (2 个级别)在 normalAjaxRender'
【问题讨论】:
-
在
normalAjaxRender内部,您尝试进行双重渲染。从错误消息中可以清楚地看出。检查里面的逻辑。 -
这就是我在方法
def normalAjaxRender(post)@post = commentif @post.saverespond_to do |format|format.html { }format.html { }format.js { render :posts }endelserender :new987654334endelserender :new987654334@9876 /跨度> -
好的.. 把它放在帖子里... 你去 在respond_to里面,你正在render也..这是不允许的,因此你得到了错误。
-
@ArupRakshit,感谢您的解释,我正在尝试使动作执行 1 次渲染而不是 2 次。如果第一次渲染失败,那么我想让第二个渲染方法工作。也许我的问题不够清楚,但我想弄清楚如何选择其中之一。
标签: ruby-on-rails ruby exception-handling faye private-pub