我想在视图中提供csv链接,并将csv生成代码放在ApplicationHelper
中。但是我收到了这个错误:
undefined method `send_data' for #<#<Class:0x0000010151c708>:0x0000010151a070>
参考:
send_data content, :type => "text/plain",
:filename => filename,
:disposition => 'attachment'
如果我将csv代码放在控制器中,它可以正常工作。我希望使用帮助器来避免为每个我想为csv选项提供csv选项的控制器定义路由(我有一堆)。如何让助手可以使用send_data
(和其他必要的方法)?
答案 0 :(得分:110)
helper_method
。默认情况下,ApplicationController
中的方法只能在控制器中访问。
向ApplicationController
添加方法并将其作为辅助方法公开helper_method
:
class ApplicationController < ActionController::Base
helper_method :foo
def foo
"bar"
end
end
现在,控制器和视图都可以访问foo
方法。
答案 1 :(得分:10)
如果问题是在所有控制器中使ApplicationHelper中的方法可用,为什么不添加一行
include ApplicationHelper
到ApplicationController文件?