跨控制器共享私有方法

时间:2011-06-02 03:13:18

标签: ruby-on-rails controller helpermethods

嘿伙计们,我有两个控制器,X和Y:

在X中,我有一个:before_filter用于私有方法,foo。

我在控制器X的顶部也有以下声明。

helper_method:foo

在控制器Y中,我有一个:before_filter用于私有方法,bar。在酒吧,我打电话给foo。但显然这是不允许的,因为我得到一个未定义的局部变量或方法错误。我认为我的:helper_method声明应该允许foo在其他控制器中使用。

一般来说,如何在控制器Y中实现调用foo?有没有办法让foo保持私密?如果没有,如果foo不是私有的话,如何实现(同时遵守良好的设计原则)?

谢谢!

1 个答案:

答案 0 :(得分:1)

如果在多个控制器中需要foo,则应将其作为受保护方法放在基本应用程序控制器中。这将使您可以在需要的地方访问它,同时将其保留在公共界面之外。

或者,您可以将foo放入模块中并根据需要包含它。

您采取哪种方法取决于您的具体情况。