另一種方式來做到這一點,而無需使用FasterCSV:
要求紅寶石的CSV初始化文件中的庫,如config/initializers/dependencies.rb
require "csv"
由於某些背景下面的代碼是基於創建搜索資源的Ryan Bate's Advanced Search Form。在我的情況下,搜索資源的顯示方法將返回以前保存的搜索結果。它也響應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) %>
至少在最近版本的Rails,你也可以用`進入這樣做。全部`而不是。 – 2010-09-29 00:47:23