Ein anderer Weg, dies zu tun, ohne FasterCSV mit:
Rubys csv Erfordern Bibliothek in einer Initialisierer-Datei wie config/initializers/dependencies.rb
require "csv"
Da einige Hintergrund der folgende Code basiert auf Ryan Bate's Advanced Search Form, die eine Suchressource erstellt. In meinem Fall gibt die show-Methode der Suchressource die Ergebnisse einer zuvor gespeicherten Suche zurück. Es reagiert auch auf CSV und verwendet eine Ansichtsvorlage, um die gewünschte Ausgabe zu formatieren.
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
Die show.csv.erb Datei sieht wie folgt aus:
<%- 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 -%>
auf der HTML-Version des Berichts Seite ich einen Link, um den Bericht zu exportieren, dass der Benutzer sehen ist. Im Folgenden ist der link_to, die die CSV-Version des Berichts zurückgibt:
<%= link_to "Export Report", formatted_advertiser_search_path(@advertiser_search, :csv) %>
Zumindest in den neueren Versionen von Rails, können Sie auch 'Eintrag verwenden. alles stattdessen. –