我想在csv视图中提供ApplicationHelper个csv链接.然而,我得到了这个错误:

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

参考以下内容:

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

如果我把csv代码放在控制器中,它就可以正常工作.我希望使用helper来避免 for each 我想提供csv选项的控制器定义路由(我有很多).我如何向助手提供send_data种(以及其他必要的方法)?

推荐答案

Use helper_method.

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

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

class ApplicationController < ActionController::Base

  helper_method :foo

  def foo
    "bar"
  end

end

现在,两个视图都可以访问foo方法.

Ruby-on-rails相关问答推荐

使用turbo流的部分渲染在rails 7中不起作用.

Rails 7.1中的覆盖脚手架控制器

如何将Form_With用于多个没有控制器的型号

RubyOnRail在测试环境中启动失败

Rails 5.1.7:Sprockets::Rails::Helper::AssetNotFound

Trailblazor 操作 -> 集合 :attribute(has_many 通过关联) 与填充器 -> 如何填充 Reform::Form 形式的 slugs 数组?

为特定操作使用布局

如何将动态 Ruby 代码嵌入到 Slim 模板中的javascript部分?

Rails Migration将字符串转换为整数?

Rails 3 远程表单:如何指定内容类型?

使用 RVM 时如何安装 Ruby gem?

上传图片 Ruby on Rails

禁用 RVM 或使用没有 RVM 安装的 Ruby?

具有 has_many 关联的 FactoryGirl build_stubbed 策略

在 ruby​​ on rails 上构建方法

未选中时,如何使 check_box_tag 发布false或0参数?

Rails:从视图内渲染视图(不是部分视图)

form_for 未定义的方法 `user_path'

如何在 VS Code 中自动格式化 Ruby 或 .erb 文件?

Ruby 安装的 RVM 不工作?