FasterCSV を使用せずにこれを行う別の方法:
config/initializers/dependencies.rb のような初期化ファイルで ruby の csv ライブラリを要求する
require "csv"
背景として、次のコードは、検索リソースを作成するRyan Bate の Advanced Search Formに基づいています。私の場合、検索リソースの show メソッドは、以前に保存した検索の結果を返します。csv にも対応し、ビュー テンプレートを使用して目的の出力をフォーマットします。
def show
@advertiser_search = AdvertiserSearch.find(params[:id])
@advertisers = @advertiser_search.search(params[:page])
respond_to do |format|
format.html # show.html.erb
format.csv # show.csv.erb
end
end
show.csv.erb ファイルは次のようになります。
<%- headers = ["Id", "Name", "Account Number", "Publisher", "Product Name", "Status"] -%>
<%= CSV.generate_line headers %>
<%- @advertiser_search.advertisers.each do |advertiser| -%>
<%- advertiser.subscriptions.each do |subscription| -%>
<%- row = [ advertiser.id,
advertiser.name,
advertiser.external_id,
advertiser.publisher.name,
publisher_product_name(subscription),
subscription.state ] -%>
<%= CSV.generate_line row %>
<%- end -%>
<%- end -%>
レポート ページの HTML バージョンには、ユーザーが表示しているレポートをエクスポートするためのリンクがあります。以下は、レポートの csv バージョンを返す link_to です。
<%= link_to "Export Report", formatted_advertiser_search_path(@advertiser_search, :csv) %>