如何从ApplicationHelper调用ApplicationController方法

Dav*_*vid 48 ruby controller ruby-on-rails view-helpers ruby-on-rails-3

我想在视图中提供csv链接,我将csv生成代码放入ApplicationHelper.但是我收到了这个错误:

undefined method `send_data' for #<#<Class:0x0000010151c708>:0x0000010151a070>
Run Code Online (Sandbox Code Playgroud)

引用这个:

send_data content, :type => "text/plain",
  :filename => filename,
  :disposition => 'attachment'
Run Code Online (Sandbox Code Playgroud)

如果我将csv代码放在控制器中它工作正常.我希望使用帮助器来避免为每个我想为csv选项提供csv选项的控制器定义路由(我有一堆).如何send_data为助手提供(和其他必要的方法)?

Har*_*tty 111

使用helper_method.

默认情况下,ApplicationController只能在控制器内部访问方法.

添加一个方法ApplicationController并将其作为辅助方法公开,方法helper_method如下:

class ApplicationController < ActionController::Base

  helper_method :foo

  def foo
    "bar"
  end

end
Run Code Online (Sandbox Code Playgroud)

现在,foo控制器视图都可以访问该方法.


Geo*_*geW 10

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

include ApplicationHelper

到ApplicationController文件?