あなたはあなたの典型的な要求はHTMLで応答や場所、あなた自身の「レンダラ」を作成することによって、あなたのコントローラであなたのCSVの要求に応答することができますJSONでは、あなたのコントローラがPDFでリクエストに応答したり、CSVのように応答したりすることができます。ここにいくつかの合理的なドキュメントがあります:http://api.rubyonrails.org/classes/ActionController/Renderers.html。それはRailsのが付属していて、我々はCSV形式のMIMEタイプのMIMEを使用
ActionController::Renderers.add :csv do |obj, options|
filename = options[:filename] || 'data'
str = obj.respond_to?(:to_csv) ? obj.to_csv : obj.to_s
send_data str, type: Mime[:csv],
disposition: "attachment; filename=#{filename}.csv"
end
注:
は、CSVレンダラーを作成します。要するに
は、あなたが(ドキュメントから)このような何かを行うことができます。カスタムレンダラーの場合は、Mime::Type.register
のMIMEタイプを登録する必要があります。
コントローラのアクションでCSVレンダラを使用するには:
def show
@csvable = Csvable.find(params[:id])
respond_to do |format|
format.html
format.csv { render csv: @csvable, filename: @csvable.name }
end
end
@SkunkDog、私の答えはあなたを助けましたか?もしそうなら、それを正しいものとしてマークすることができますか? :) –
私はまだこれをテストする機会がありませんでしたが、私は今午後確認します。 – SkunkDog
申し訳ありませんが、私の頭の中でこれを包み込むのにしばらく時間がかかりました。あなたが描いていることは、私が基本的にCSV形式のショーページをダウンロードできるようになると思います。しかし、大きなデータテーブルを生成するAPI呼び出しを実行しています。私はこの呼び出しの結果をCSVとしてダウンロードできるようにしたい。各テーブルには(1000+のような)たくさんのエントリがあるので、各エントリを独自のデータベースアイテムとして保存することは望ましくありません。そのテーブルをダウンロードする方法を教えてください。 – SkunkDog