検索すればいろいろ出てくるのですが、私はこんな感じにしてみました。
ちなみに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 件のコメント:
コメントを投稿