मैं रेल 3.1.0.rc8 और क्रोमियम 15.0.874.102 का उपयोग कर रहा हूं।रेल में, सामग्री-स्वभाव फ़ाइल नाम को ओवरराइड करने में असमर्थ
मैं एक CSV डाउनलोड का फ़ाइल नाम सेट करना चाहता हूं। मैं इस SO solution का अनुसरण कर रहा हूं, लेकिन Content-Disposition
हेडर के filename
को संशोधित करने में असमर्थ हूं।
यहाँ मेरी कोड है:
respond_to do |format|
format.html
format.csv do
render_csv(:basename => "my_filename")
Rails.logger.debug "HEADERS: #{headers.to_s}"
end
end
मेरी लॉग में:
module ActionController
module CSVHelper
def render_csv options={}
if request.env['HTTP_USER_AGENT'] =~ /msie/i
headers['Pragma'] = "public"
headers['Content-Type'] = "text/plain"
headers['Cache-Control'] = "no-cache, must-revalidate, post-check=0, pre-check=0"
headers['Expires'] = "0"
else
headers['Content-Type'] = "text/csv"
end
filename = generate_filename options.delete(:basename)
headers['Content-Disposition'] = "attachment; filename=#{filename}"
end
def generate_filename basename=nil, suffix="csv"
filename = basename || params[:action]
filename << ".#{suffix}"
filename
end
end
end
और मेरे नियंत्रक में
[2011-11-28 12:25:49.611] DEBUG - HEADERS: {"Content-Type"=>"text/csv", "Content-Disposition"=>"attachment; filename=my_filename.csv"}
क्रोमियम नेटवर्क निरीक्षक उपकरण में, मैं में निम्न देखें मेरे प्रतिक्रिया शीर्षलेख:
Content-Type: text/plain
Content-Disposition: attachment; filename=index.csv
यदि मैं को foo/bar
जैसे कुछ में बदलता हूं, तो मुझे लगता है कि परिवर्तन मेरे नेटवर्क इंस्पेक्टर टूल में आया है। इससे कोई फर्क नहीं पड़ता कि मैंने filename
को सेट किया है, यह index.csv
है।
धन्यवाद, मैक्स
क्या आपके पास सही तरीके से सेट अप है? – baol
दृश्य अपेक्षित के रूप में प्रस्तुत करता है, यदि आपका यही मतलब है; डाउनलोड की गई फ़ाइल की सामग्री मुझे लगता है कि मैं – maxenglander