Chcę dać moim użytkownikom możliwość eksportu tabeli do pliku CSV.Szyny - eksport CSV: monit o pobranie pliku
Więc w moim kontrolera, dodałem na początku pliku:
respond_to :html, :js, :csv
Jestem również ustawienie nagłówki jeśli żądany format csv:
if params[:format] == 'csv'
generate_csv_headers("negotiations-#{Time.now.strftime("%Y%m%d")}")
end
Kod generate_csv_headers
(w application_controller) jest:
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
Stworzyłem również widok o nazwie index.csv.erb
wygenerować mój plik:
<%- headers = ["Id", "Name"] -%>
<%= CSV.generate_line headers %>
<%- @negotiations.each do |n| -%>
<%- row = [ n.id,
n.name ] -%>
<%= CSV.generate_line row %>
<%- end -%>
nie mam żadnych błędów, ale to po prostu wyświetla zawartość pliku CSV, a będę oczekiwać wiersz z przeglądarki, aby pobrać plik.
Wiele czytałem, ale nie mogłem znaleźć niczego, co by działało. Masz pomysł?
dziękuję, str.
dobre dyskusje na ten temat w [niniejszego SO wątku] (http://stackoverflow.com/questions/94502/in-rails-how-to-return-records-as-a-csv -file) – zetetic