検索すればいろいろ出てくるのですが、私はこんな感じにしてみました。
ちなみに1.8.7の場合です。
show_dataというアクションでhtmlとcsvに対応しているケースです。
csvファイルはダウンロードされて、ファイルはsjisになるようにしています。
データの取得は、Hogeモデルのget_dataでなんかしているものとしています。
html表示用のviewは別途show_data.html.erbなどが用意されているという前提です。
def show_data @data = Hoge.get_data respond_to do |format| format.html format.csv do require 'fastercsv' csv_text = FasterCSV.generate do |csv| csv << ["head1","head2","head3","head4"] @data.each do |d| csv << [d[:col1],d[:col2],d[:col3],d[:col4]] end end send_data(csv_text.tosjis, :type => 'text/csv', :filename => "download.csv") end end end
viewからは以下のように呼び出します。
<%= link_to "HTML表示",:action=>"show_data" %> <%= link_to "CSVダウンロード",:action=>"show_data",:format => :csv %>
0 件のコメント:
コメントを投稿