2012-07-27 72 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