3

貌似app/helpers/foo.rb里面的那些helper可以在View中使用,但是在Controller中不能使用?

在某些情况下,不同的控制器可能需要使用相同的方法,但只是传入不同的参数,那么在这种情况下,在控制器中使用助手不是有意义吗?

4

3 回答 3

3

在控制器之间重用代码有两种主要方法。

您可以创建一个ApplicationController包含公共代码的子类,然后您想要共享代码的控制器从新的控制器类继承。(或者ApplicationController如果需要由所有控制器共享,则只需将代码添加到自身。)

或者,您可以创建自己的模块(本质上这是所有帮助程序)并将它们包含到您要在其中使用代码的控制器中。

由于助手只是模块,您可以在控制器中包含助手,但助手更多地用于视图层而不是控制器,因此很少在控制器之间共享代码。

于 2010-09-15T21:26:44.503 回答
1

这可能是有道理的,但它不是那样工作的。(如果有人知道如何做到这一点,请随时发布)

您可以将常用助手放入ApplicationController,它们可以从您应用程序中的任何控制器访问。

于 2010-09-15T21:23:32.583 回答
1

如上所述,您可以将常用助手放在 ApplicationController 或子类中。我要添加它以使它们也可用于视图,您将它们放在类的顶部:

helper_method :foo
于 2010-09-15T21:40:35.250 回答