如何从ApplicationHelper调用ApplicationController方法

我想在视图中提供csv链接,并将csv生成代码放在ApplicationHelper 。 不过,我得到这个错误:

 undefined method `send_data' for #<#<Class:0x0000010151c708>:0x0000010151a070> 

引用这个:

 send_data content, :type => "text/plain", :filename => filename, :disposition => 'attachment' 

如果我把csv代码放在一个控制器中,它可以正常工作。 我希望能够使用helper来避免为每个我想为csv选项提供的控制器(我有一堆)定义路由。 我怎样才能使send_data (和其他必要的方法)可用的助手?

使用helper_method

默认情况下, ApplicationController中的方法只能在控制器中访问。

将一个方法添加到ApplicationController ,并将其作为helper_method的辅助方法helper_method

 class ApplicationController < ActionController::Base helper_method :foo def foo "bar" end end 

现在foo方法可以被控制器视图访问。

如果问题是使ApplicationHelper中的方法在所有控制器中都可用,那么为什么不添加一行

包括ApplicationHelper

到ApplicationController文件?