사용자에게 CSV로 표를 내보낼 수있는 기능을 제공하고 싶습니다.레일 - CSV 내보내기 : 파일 다운로드 확인
respond_to :html, :js, :csv
요구 된 형식이 CSV 인 경우 나 또한 헤더를 설정하고 있습니다 : generate_csv_headers
에 대한
if params[:format] == 'csv'
generate_csv_headers("negotiations-#{Time.now.strftime("%Y%m%d")}")
end
코드 내 컨트롤러에 따라서
, 나는 파일의 상단에 추가 한 (application_controller에)입니다 :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
가 나는 또한라는 뷰를 만들었습니다내 파일 생성 :
<%- headers = ["Id", "Name"] -%>
<%= CSV.generate_line headers %>
<%- @negotiations.each do |n| -%>
<%- row = [ n.id,
n.name ] -%>
<%= CSV.generate_line row %>
<%- end -%>
내가 오류를 필요는 없습니다,하지만 난 파일을 다운로드 브라우저에서 프롬프트를 기대하면서 단순히 CSV 파일의 내용을 표시합니다.
많은 것을 읽었지만 작동 할만한 것을 찾을 수 없습니다. 아이디어가 있으십니까?
감사합니다.
[이 SO 스레드]에서이 주제에 대한 좋은 토론 (http://stackoverflow.com/questions/94502/in-rails-how-to-return-records-as-a-csv -file) – zetetic