在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")