2012-07-27 69 views
0

我在控制器的父类中有一个方法。它在大多数方法中用作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/

回答

0

redirect_torender方法不会暂停该方法的执行。如果你必须确保只有其中一个被调用(否则Rails抛出DoubleRenderError,请参阅guide 2.2.13)。代码redirect_to中的问题由require_user调用,render接下来调用。

+0

谢谢@Baldrick我仍然不明白为什么日志消息不是串行输出。我想我会在返回到控制器的show方法之前从require_user方法中获取消息。 它似乎并不重要,我在require_user做什么,因为它不会执行时,我希望它是。 – Greg 2012-07-27 13:35:42

+0

没关系..同步的东西只是我有无序的日志。我需要弄清楚如何停止执行;我期望渲染和返回将工作..但它似乎只是返回到调用方法,这正是我不想发生。 – Greg 2012-07-27 13:38:29

+0

@Greg这可能只是Rails打印日志消息的方式。尝试使用时间戳或递​​增的全局变量来确保执行流程... – Baldrick 2012-07-27 13:40:33