【发布时间】:2011-04-12 22:07:42
【问题描述】:
好像app/helpers/foo.rb中的那些helper可以在View中使用,但是在Controller中不能使用?
在某些情况下,不同的控制器可能需要使用相同的方法,但只是传入不同的参数,那么在这种情况下,在控制器中使用助手不是有意义吗?
【问题讨论】:
标签: ruby-on-rails controller helpers
好像app/helpers/foo.rb中的那些helper可以在View中使用,但是在Controller中不能使用?
在某些情况下,不同的控制器可能需要使用相同的方法,但只是传入不同的参数,那么在这种情况下,在控制器中使用助手不是有意义吗?
【问题讨论】:
标签: ruby-on-rails controller helpers
在控制器之间重用代码有两种主要方式。
您可以创建ApplicationController 的子类,其中包含公共代码,然后您想要共享代码的控制器从新的控制器类继承。 (或者如果需要由所有控制器共享,则只需将代码添加到 ApplicationController 本身。)
或者,您可以创建自己的模块(这就是所有帮助程序的本质)并将它们包含到您要在其中使用代码的控制器中。
由于助手只是模块,您可以在控制器中包含助手,但助手更多地用于视图层而不是控制器,因此很少在控制器之间共享代码。
【讨论】:
这可能是有道理的,但它不会那样工作。 (如果有人知道怎么做,请随时发布)
您可以将常用助手放在ApplicationController 中,它们可以从您应用中的任何控制器访问。
【讨论】:
如上所述,您可以将常用助手放在 ApplicationController 或子类中。我要添加它以使它们也可用于视图,您将它们放在类的顶部:
helper_method :foo
【讨论】: