48

ビューに csv リンクを提供したいので、csv 生成コードを に配置しましたApplicationHelper。ただし、次のエラーが発生します。

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

これを参照する:

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

csv コードをコントローラーに配置すると、正常に動作します。csvオプションを提供したいすべてのコントローラーのルートを定義する必要を避けるために、ヘルパーを使用したいと考えていました(たくさんあります)。send_dataヘルパーが (およびその他の必要なメソッドを) 利用できるようにするにはどうすればよいですか?

4

2 に答える 2

113

を使用しhelper_methodます。

デフォルトでは、 のメソッドApplicationControllerはコントローラー内でのみアクセスできます。

にメソッドを追加し、次ApplicationControllerのヘルパー メソッドとして公開しhelper_methodます。

class ApplicationController < ActionController::Base

  helper_method :foo

  def foo
    "bar"
  end

end

これで、コントローラービューのfoo両方からメソッドにアクセスできるようになりました。

于 2011-05-13T03:32:43.680 に答える
10

問題が ApplicationHelper のメソッドをすべてのコントローラーで使用できるようにすることである場合は、行を追加してみませんか

ApplicationHelper を含める

ApplicationController ファイルに?

于 2011-05-29T16:07:39.870 に答える