2009-11-25 2 views
1

데이터를 CSV로 내 보냅니다.fastercsv 및 CSV :: Writer (Ruby on Rails)를 사용하여 CSV로 내보내기

사용자가 드롭 다운 메뉴에서 형식을 선택할 수있는 양식이 있습니다. 따라서 형식 선택에 따라 출력은 ajax 호출을 사용하여 표시됩니다. html로 잘 작동하지만 CSV 형식을 선택하면 화면에 팝업이 표시되지 않고 (파일을 저장하거나 열지 묻는) 모든 파일이 직접 다운로드되지 않습니다.

Fastercsv를 사용했지만 (문제는 내가 파일을 저장할지 열지 묻는 팝업이 표시되지 않음) CSV :: Writer 콘솔에서이 오류 메시지가 표시되는 곳입니다.

NoMethodError (You have a nil object when you didn't expect it! 
The error occurred while evaluating nil.bytesize): 
    actionpack (2.3.4) lib/action_controller/streaming.rb:142:in `send_data' 

Fastercsv를 사용하여 코드 :

def export_to_csv 
    csv_string = FasterCSV.generate(:col_sep => ",") do |csv| 
     members = ["Versions/Project Members"] 
     members_selected.each {|member| members << Stat.member_name(member)} 
     Stat.project_members(project).each {|user| members << user.name} 
     csv << ["some text", "text 2", "text 3"] 
    end 
    return csv_string 
    end 

이 내가 데이터를 보내고 방법입니다 ", 텍스트 3 텍스트, 텍스트 2"나는이 같은 응답을 볼

send_data(export_to_csv,:type => 'text/csv; charset=iso-8859-1; header=present', 
        :disposition => "attachment", :filename => "filename.csv") 

을 firebug 콘솔에 있지만 파일을 저장하거나 열 것인지 묻는 팝업이 표시되지 않습니다.

내가 CSV를 사용하고있는 무슨이다 :: 작가 :

def export_to_csv 
    report = StringIO.new 
     CSV::Writer.generate(report, ',') do |csv| 
     csv << ['c1', 'c2'] 
     end 
    end 

과로 전화 :

NoMethodError (You have a nil object when you didn't expect it! 
The error occurred while evaluating nil.bytesize): 
    actionpack (2.3.4) lib/action_controller/streaming.rb:142:in `send_data' 
:

send_data(export_to_csv,:type => 'text/csv; charset=iso-8859-1; header=present', 
        :disposition => "attachment", :filename => "filename.csv") 

이 콘솔에 발생되는 오류입니다

답변

0

send_data가 범위를 벗어난 개체를 참조하려고합니다. 마지막 '종료'문을 확인하십시오.