代码之家  ›  专栏  ›  技术社区  ›  Eimantas

在生成操作后重定向到周围筛选器

  •  0
  • Eimantas  · 技术社区  · 15 年前

    我正在使用一个around过滤器,在某些情况下,它应该在生成操作后(以render或redirect结尾)将用户重定向到其他路径。

    写作 redirect_to 在around filter after yield语句导致双重呈现错误。尝试“重新配置”响应对象(通过设置 body nil location 头到所需的URL)导致以下错误(取自控制器规格):

    Failure/Error: Unable to find matching line from backtrace
    You have a nil object when you didn't expect it!
    You might have expected an instance of Array.
    The error occurred while evaluating nil.each
    

    有人做过类似的事情吗?

    2 回复  |  直到 15 年前
        1
  •  1
  •   Eimantas    15 年前

    事实上,在生成操作之后,我会在过滤器周围执行重定向。您只需重新定义response.location属性并将response.status重置为302(而不是200)。

        2
  •  0
  •   Jeremy    15 年前

    您不能放弃,然后重新定向/呈现。如果需要在around筛选器中使用控制器操作中的某些逻辑,请考虑将该逻辑移动到before_筛选器或around筛选器的第一个块,以便它在around筛选器中都可用,以确定要执行的操作(重定向或以其他方式生成),以及要对其执行的操作可用。

    推荐文章