Rails控制器的Ruby帮手方法的位置?

我有一些Ruby方法(或所有)控制器需要。 我试图把它们放在/app/helpers/application_helper.rb 。 我用它来在视图中使用的方法。 但是控制器没有看到这些方法。 是否有另一个地方,我应该把他们或我需要访问这些帮手方法不同?

使用最新的稳定的Rails。

您应该在ApplicationController定义方法。

对于Rails 4以后,担心是要走的路。 这里有一个体面的文章http://richonrails.com/articles/rails-4-code-concerns-in-active-record-models

从本质上讲,如果你看看你的控制器文件夹,你应该看到一个问题的子文件夹。 沿着这些线创build一个模块

 module EventsHelper def do_something end end 

然后,在控制器中包含它

 class BadgeController < ApplicationController include EventsHelper ... end 

你应该在应用程序控制器内部定义方法,如果你有几个方法,那么你可以做如下

 class ApplicationController < ActionController::Base helper_method :first_method helper_method :second_method def first_method ... #your code end def second_method ... #your code end end 

您也可以按照以下方式添加助手文件

 class YourController < ApplicationController include OneHelper include TwoHelper end 

您可以使用view_context从控制器调用任何助手方法,例如

 view_context.my_helper_method 

瑞安·比格的反应很好。

其他可能的解决scheme是添加助手到您的控制器:

 class YourController < ApplicationController include OneHelper include TwoHelper end 

最好的祝福!

Interesting Posts