【问题标题】:Using a "filter" method as a regular helper method使用“过滤器”方法作为常规辅助方法
【发布时间】:2012-07-27 12:28:42
【问题描述】:

我在控制器的父类中有一个方法。它在大多数方法中用作 before_filter (require_user),但我需要像 helper_method 一样调用它。当我这样做时,该方法不会立即被调用,而是异步调用。

我不明白为什么会这样。

控制器的示例代码和来自实际会话的错误消息在这里https://gist.github.com/3187671

感谢任何帮助。谢谢!

编辑:我刚找到这篇文章,它解释说它不应该工作;但没有解释为什么它会异步调用助手http://www.markhneedham.com/blog/2011/01/11/rails-using-helpers-inside-a-controller/

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    redirect_torender 方法不会停止方法的执行。如果您必须确保只调用其中一个(否则 Rails 会抛出 DoubleRenderError,请参阅guide 2.2.13)。这就是你的代码中的问题redirect_torequire_user 调用,而render 被接下来调用。

    【讨论】:

    • 谢谢@Baldrick 我仍然不明白为什么日志消息没有串行输出。我认为在它返回到控制器的 show 方法之前,我会从 require_user 方法中获取消息。我在 require_user 中做什么似乎并不重要,因为它没有在我期望的时候执行。
    • 没关系..同步的东西只是我有不稳定的日志。我需要弄清楚如何停止执行;我预计渲染和返回会起作用..但它似乎只是返回到调用方法,这正是我不希望发生的事情。
    • @Greg 这可能只是 Rails 打印日志消息的方式。尝试使用时间戳或递​​增的全局变量来确保执行流程...
    • @Greg redirected_to 在从 before_filer 调用时暂停请求,但在从 show 内部调用时不会。在require_user 中添加一个返回值并在show 中使用它来停止该方法。
    猜你喜欢
    • 1970-01-01
    • 2020-01-27
    • 1970-01-01
    • 2014-03-24
    • 2019-08-24
    • 2021-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多