download csv-Datei auf computer
Vom ajax rufe ich meine export-Aktion in meinem controller
def export
data_filtered = eval(params[:data_filtered][9..-2])
CSV.open("data.csv", "wb") do |csv|
csv << data_filtered.first.keys
data_filtered.each do |hash|
csv << hash.values
end
end
end
Derzeit bedeutet dies in der Tat erstellen Sie eine Datei namens Daten.csv auf meinem computer, aber es doesn ' T zeigen keine Beweise für die tatsächlich tun. Ich möchte die Datei herunter, indem Sie den browser und in den browser lädt und auch in meinem downloads-Ordner.
EDIT:
def export
data_filtered = eval(params[:data_filtered][9..-2])
csv_file = CSV.generate({}) do |csv|
csv << data_filtered.first.keys
data_filtered.each do |hash|
csv << hash.values
end
end
send_data csv_file, :type => 'text/csv; charset=iso-8859-1; header=present', :disposition => "attachment; filename=tester1.csv"
Ende
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie die Header, um anzugeben, was der browser tun sollten, mit der daraus resultierenden Datei.
Jedoch, es müsste erst geschrieben werden, an den server, und dann heruntergeladen. Vielleicht finden Sie diese hilfreiche Antwort: Ruby-1.9.2-export einer CSV-string, ohne die Generierung einer Datei
Nun, es scheint Sie nicht senden, wieder keine Antwort von dem controller-Methode, die ist, warum tut sich nichts im browser. Sie sind einfach die Verarbeitung der CSV-Datei.
Zurück zu senden, eine herunterladbare Person eine Antwort, eine Möglichkeit wäre die Nutzung entweder send_data oder send_file, je nachdem, welches format Sie haben die Daten (Binär vs. eine Datei).
Beide im wesentlichen das gleiche tun -- ermöglichen Ihnen das angeben der Daten, der Daten-Typ, und eine herunterladbare Datei-Namen, die Sie angeben. Es kann zurückgegeben werden, wie eine Antwort, genau wie die render-Aufrufe.
Hoffe, das hilft!