Deseo otorgar a mis usuarios la capacidad de exportar una tabla a CSV.Rieles: exportación de CSV: solicitud de descarga de archivos
Así que en mi controlador, he añadido en la parte superior del archivo:
respond_to :html, :js, :csv
También estoy fijando los encabezados si el formato solicitado es csv:
if params[:format] == 'csv'
generate_csv_headers("negotiations-#{Time.now.strftime("%Y%m%d")}")
end
Código de generate_csv_headers
(en application_controller) es:
def generate_csv_headers(filename)
headers.merge!({
'Cache-Control' => 'must-revalidate, post-check=0, pre-check=0',
'Content-Type' => 'text/csv',
'Content-Disposition' => "attachment; filename=\"#{filename}\"",
'Content-Transfer-Encoding' => 'binary'
})
end
también he creado una vista llamada index.csv.erb
para generar mi archivo:
<%- headers = ["Id", "Name"] -%>
<%= CSV.generate_line headers %>
<%- @negotiations.each do |n| -%>
<%- row = [ n.id,
n.name ] -%>
<%= CSV.generate_line row %>
<%- end -%>
que no tienen ningún error, sino que simplemente muestra el contenido del archivo CSV, mientras que yo esperaría un indicador del navegador para descargar el archivo.
He leído mucho, pero no he encontrado nada que funcione. ¿Tiene una idea?
gracias, p.
Algunos buena discusión sobre este tema en [este hilo SO] (http://stackoverflow.com/questions/94502/in-rails-how-to-return-records-as-a-csv -file) – zetetic