【问题标题】:Rails: Reset rendering/redirecting stateRails:重置渲染/重定向状态
【发布时间】:2013-11-29 10:46:47
【问题描述】:

我有一个异常处理程序(在rescue_from 注册),它有时会导致双重渲染错误,因为在抛出异常之前实际操作已经渲染/重定向。

为了防止出现这种异常,我正在寻找现代版的 erase_results。它清除了当前请求中的任何呈现/重定向活动。不知道为什么它被弃用,因为它看起来很有用。无论如何,我已经尝试通过挖掘原始来源来重建它,但是一些细节也发生了变化,所以这将是一个 hack,我宁愿干干净净。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 exception-handling actioncontroller


    【解决方案1】:

    Rails 使用 controller#response_body 来决定请求是否已经呈现或重定向。只需将 response_body 设置为 nil 即可避免此错误。注意:可以说更好的方法是首先防止多次渲染或重定向。

    见:#render

    【讨论】:

    • 好的,我稍后会尝试测试它。顺便说一句,阻止这种情况并不实际,因为重定向和异常都是自然事件,并且只要这两种情况都发生,就会发生这种情况。
    • 这会在新版本的 Rails 中遇到麻烦:github.com/rails/rails/issues/25106
    猜你喜欢
    • 1970-01-01
    • 2021-06-11
    • 2021-07-20
    • 1970-01-01
    • 2017-11-11
    • 1970-01-01
    • 2023-02-09
    • 1970-01-01
    • 2015-07-04
    相关资源
    最近更新 更多