send_data für die csv-Datei gibt den text der Datei, nicht die Datei
Guten Tag! Ich will download automatisch generierte Datei qwerty.csv, aber es gibt nur text "12345" (ohne Datei). Können Sie mir helfen?
UI
<script type="text/javascript">
function getCsv() {
var ids = getSelectedRecordIds();
$.post('/payments/form_csv.csv', { ids: ids }, function(data) {});
}
</script>
Controller
def form_csv
csv_string = CSV.generate do |csv|
csv << ["12345"]
end
respond_to do |format|
format.csv {
send_data csv_string, :type => 'text/csv; charset=utf-8; header=present', :disposition => "attachment; filename=qwerty.csv", :filename => "qwerty.csv"
}
end
end
In der Konsole
Started POST "/payments/form_csv.csv" for 127.0.0.1 at 2012-06-18 18:18:11 +0400
Processing by PaymentsController#form_csv as CSV
Parameters: {"ids"=>["18\n\t "]}
Rendered text template (0.0ms)
Sent data qwerty.csv (0.4ms)
Completed 200 OK in 2ms (Views: 0.4ms | ActiveRecord: 0.0ms)
Aber es gibt keine Datei, Eingabeaufforderung,...
- Vielleicht ist es nur eine Frage, wie Sie registriert Ihre Anwendungen/MIME-Typen. Was geschieht, wenn Sie auf eine *.csv-Datei in Ihrem Datei-browser? Hat LibreOffice (oder Excel) automatisch öffnen? Unbekannte/nicht registrierte txt MIME-Typen kann immer angezeigt werden in Ihrem browser.
- >> Was passiert, wenn Sie auf eine *.csv-Datei in Ihrem Datei-browser? Hat LibreOffice (oder Excel) automatisch öffnen? Leider, ja, Excel öffnen, wird es automatisch =( Sehr ähnlichen Thema (ohne Beschluss) - stackoverflow.com/questions/7597414/...
- Ich denke, es Falle über smart-browser, wo die CSV-Daten auf browser -. setzen Sie diese und hoffe, dass dies helfen
config.action_dispatch.x_sendfile_header="X-Sendfile"
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ow, funktioniert es ohne ajax, als eine form Einreichen!
Dort ist das gleiche problem in diesem Thema:
http://www.ruby-forum.com/topic/111107
Controller
UI
wo post_to_url - Methode aus
JavaScript post-request (z.B. ein Formular Absenden
Thema.
Und nach alle
controller zu deaktivieren Sie die Authentifizierung token für pay_csv Anfrage.
Hässliche Lösung, aber es hilft mir... Vielleicht ist es mehr richtige Weg?
Viren,
Ich werde es versuchen, danke!