17

这是代码:

render :file => @somedir + "/blah.xml"

...但是当我签入 FireBug 时,生成的 MIME 类型是 text/html。在这种情况下如何指定 MIME 类型?

4

5 回答 5

35

实际上有两种方法可以设置内容类型(我认为这就是你所说的 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

希望这可以帮助!

于 2008-11-18T21:48:36.590 回答
16
render :file => @somedir + "/blah.xml", :content_type => Mime::XML
于 2009-07-09T11:04:14.683 回答
3

关于什么

headers["Content-Type"] = "text/xml"

? 希望有帮助。

于 2008-11-18T21:48:54.080 回答
2

看看这里。基本上你需要使用 render :xml => blah.to_xml

于 2008-11-18T20:33:45.120 回答
0

根据http://api.rubyonrails.org/classes/Mime/Type.html,您可以像这样指定它:

render file: @somedir + "/blah.xml", mime_type: Mime::Type.lookup("text/xml")  
于 2018-07-16T05:37:19.853 回答