Je souhaite donner à mes utilisateurs la possibilité d'exporter une table au format CSV.Rails - Exportation CSV: demande de téléchargement de fichier
Donc, dans mon contrôleur, j'ai ajouté au-dessus du fichier:
respond_to :html, :js, :csv
Je fixeraient également les en-têtes si le format est csv:
if params[:format] == 'csv'
generate_csv_headers("negotiations-#{Time.now.strftime("%Y%m%d")}")
end
Code pour generate_csv_headers
(en application_controller) est:
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
J'ai aussi créé une vue nommée index.csv.erb
pour générer mon fichier:
<%- headers = ["Id", "Name"] -%>
<%= CSV.generate_line headers %>
<%- @negotiations.each do |n| -%>
<%- row = [ n.id,
n.name ] -%>
<%= CSV.generate_line row %>
<%- end -%>
Je n'ai aucune erreur, mais il affiche simplement le contenu du fichier CSV, alors que je me attends à une invite du navigateur pour télécharger le fichier. J'ai beaucoup lu, mais je n'ai rien trouvé qui fonctionne. Avez-vous une idée?
merci, p.
bonnes discussions sur ce sujet dans [ce fil SO] (http://stackoverflow.com/questions/94502/in-rails-how-to-return-records-as-a-csv -fichier) – zetetic