在rails中呈现MIME类型的文件
这是代码:
render :file => @somedir + "/blah.xml"
…但是当我签入FireBug时,生成的MIME类型是text / html。 在这种情况下如何指定MIME类型?
实际上有两种方法来设置内容类型(我认为这是你的mime类型的意思)。 如果它适用于您的Rails版本,则应使用第二个选项。
class FileController < ApplicationController def index filename = 'some.xml' extname = File.extname(filename)[1..-1] mime_type = Mime::Type.lookup_by_extension(extname) content_type = mime_type.to_s unless mime_type.nil? # 1 #headers['Content-Type'] = content_type #render :file => filename # 2 render :file => filename, :content_type => content_type end end
希望这可以帮助!
render :file => @somedir + "/blah.xml", :content_type => Mime::XML
关于什么
headers["Content-Type"] = "text/xml"
? 希望有所帮助。
看看这里 。 基本上你需要使用render:xml => blah.to_xml
根据http://api.rubyonrails.org/classes/Mime/Type.html ,您可以像这样指定它:
render file: @somedir + "/blah.xml", mime_type: Mime::Type.lookup("text/xml")