Rails делает это очень легко. Вам совсем не нужно менять маршруты для соответствия формату CSV, поскольку rails распознает MIME-тип csv.
Сначала настройте маршрут в маршрутах. Rb:
map.invoice_revisions 'invoices/:id/revisions.:format',
:controller=>:invoices,
:action=>:revisions
В вашем контроллере сделайте что-то вроде этого:
def revisions
# ... set @revisions with something like
@revisions = Invoice.find(params[:id]).revisions
respond_to do |format|
format.html # will render the revisions html template
format.csv { render :csv => revisions_csv } # see sample method below
end
end
end
private
def revisions_csv # convert @revisions to csv: customize to your needs
FasterCSV.generate do |csv|
csv << @revisions.first.attributes.keys # set the headers
@revisions.each do |revision| # set the data
csv << revision.attributes.values
end
end
end
Вот учебник с более подробной информацией о форматировании файлов csv с помощью csvbuilder:
http://rubyglasses.blogspot.com/2009/07/csv-views-with-fastercsv-and-csvbuilder.html