ビューに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
(および他の必要なメソッド)ヘルパーが利用可能ですか?
helper_method
を使用します。デフォルトでは、ApplicationController
のメソッドはコントローラー内でのみアクセス可能です。
メソッドをApplicationController
に追加し、helper_method
を使用してヘルパーメソッドとして公開します。
class ApplicationController < ActionController::Base
helper_method :foo
def foo
"bar"
end
end
これで、foo
メソッドは両方のコントローラーおよびビューからアクセス可能になりました。
問題がApplicationHelperのメソッドをすべてのコントローラーで使用可能にすることである場合、行を追加しないでください
ApplicationHelperを含める
applicationControllerファイルに?