似乎app/helper/foo.rb中的那些助手可以在View中使用,但不能在Controller中使用?在Rails中,使用Controller/vs中的app/helpers/foo.rb方法的任何方式?
在某些情况下,不同的控制器可能需要使用相同的方法,但只传入不同的参数,所以在这种情况下,在控制器中使用辅助器是否合理?
似乎app/helper/foo.rb中的那些助手可以在View中使用,但不能在Controller中使用?在Rails中,使用Controller/vs中的app/helpers/foo.rb方法的任何方式?
在某些情况下,不同的控制器可能需要使用相同的方法,但只传入不同的参数,所以在这种情况下,在控制器中使用辅助器是否合理?
这可能是有道理的,但它不会那样工作。 (如果有人知道如何做到这一点,随时张贴)
你可以把常见的助手在ApplicationController
,他们将可以从您的应用程序的任何控制器访问。
在控制器之间重用代码有两种主要方法。
您可以创建ApplicationController
的子类,该子类具有通用代码,然后您的控制器想要共享从新控制器类继承的代码。 (或者只需要将代码添加到ApplicationController
本身,如果它需要被所有控制器共享)。
或者,您可以创建自己的模块(这是所有帮助器本质上的),并将它们包含到您想要的控制器中使用代码。
由于助手只是模块,你可以在你的控制器中包含一个助手,但助手比控制器更适合视图层,所以它很少是控制器之间共享代码的地方。
如上所述,您可以将通用助手放在ApplicationController或子类中。我想补充一点,让他们提供给的意见,以及,你把在类的顶部:
helper_method :foo
林嗨,蒂姆说,你可以把它们放在控制器和定义为辅助方法例如:ApplicationController的< ActionController :: Base helper_method:foo end – sameera207 2010-09-16 06:03:54