मेरे पास एक नियंत्रक में एक फ़ंक्शन है जो कुछ विनिर्देशों को लेता है और उन पर एक रिपोर्ट उत्पन्न करता है। इस समारोह user_report एक दृश्य में कहा जाता है:स्प्रेडशीट प्लग-इन के साथ रेल में रूबी में send_data के साथ कठिनाई
<% = submit_to_remote 'प्रस्तुत बटन', "निर्यात एक्सेल में रिपोर्ट",: यूआरएल => {: नियंत्रक =>: रिपोर्ट,: कार्रवाई =>: user_report,: print_state => 'print'}%>
रिपोर्ट_कंट्रोलर में मैं user_report फ़ंक्शन के भीतर एक्सेल फ़ाइल उत्पन्न करने के लिए स्प्रेडशीट प्लगइन का उपयोग करता हूं। मैं फ़ाइल को सर्वर पर पहले बिना सर्वर पर स्ट्रीम करने के लिए send_data का उपयोग करना चाहता हूं। मैंने जो शोध किया है, वह दिखाता है कि स्ट्रिंगियो का उपयोग करना नीचे जैसा दिखाया गया है। निराशाजनक रूप से, जब मैं send_data को कॉल करता हूं तो कुछ भी नहीं होता है। प्लगइन अच्छी तरह से एक फ़ाइल बनाने और सर्वर पर सहेजने के लिए काम करता है, लेकिन जब मैं send_file का उपयोग करता हूं तो कुछ भी नहीं करता है, यह सुझाव देता है कि समस्या प्लगइन में नहीं है। लेकिन फिर मैं send_file/send_data के साथ क्या गलत कर रहा हूं?
समारोह अपने आप में इस तरह दिखता है:
डीईएफ़ user_report
if request.post?
unless params[:reports][:userid].blank?
@userid=params[:reports][:userid]
end
if params[:print_state]=='print'
report = Spreadsheet::Workbook.new
info = report.create_worksheet :name => 'User Information'
info.row(1).push 'User ID', @userid
@outfile = "Report_for_#{@userid}.xls"
require 'stringio'
data = StringIO.new ''
report.write data
send_data data.string, :type=>"application/excel", :disposition=>'attachment', :filename => @outfile
end
respond_to do |format|
format.js { }
end
end
अंत
लॉग फ़ाइल पढ़ता 2010-10-18 14:13 : 59 जानकारी - डेटा भेजना Report_for_jjohnson.xls लेकिन ब्राउज़र में कोई डाउनलोड शुरू नहीं होता है। मैं पहले इस ऐप पर send_data का उपयोग करने में सफल रहा हूं, जो भ्रमित है।
मैं स्प्रेडशीट.रुब्योरिज.org पर रेल v2.3, रूबी v1.8.7, और स्प्रेडशीट v6.4.1 का उपयोग कर रहा हूं। हालांकि मैं लिख सकते हैं और हटाना चाहते न
send_data data.string.bytes.to_a.pack("C*"), :type=>"application/excel", :disposition=>'attachment', :filename => @outfile
यह एक पुरानी सवाल यह है कि ... लेकिन मैं सूचना के लिए कि 'data.string.force_encoding ('बाइनरी')' मेरे लिए काम करता है और थोड़ा बेहतर लग रहा है एक से आग्रह करता हूं की है। – scaryzet