【发布时间】:2010-09-22 22:26:43
【问题描述】:
代码如下:
render :file => @somedir + "/blah.xml"
...但是当我签入 FireBug 时,生成的 MIME 类型是 text/html。在这种情况下如何指定 MIME 类型?
【问题讨论】:
标签: ruby-on-rails ruby render mime-types
代码如下:
render :file => @somedir + "/blah.xml"
...但是当我签入 FireBug 时,生成的 MIME 类型是 text/html。在这种情况下如何指定 MIME 类型?
【问题讨论】:
标签: ruby-on-rails ruby render mime-types
看看here。基本上你需要使用渲染:xml => blah.to_xml
【讨论】:
其实有两种方法可以设置 content-type(我想这就是你所说的 mime-type 的意思)。如果它适用于您的 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
希望这会有所帮助!
【讨论】:
MIME::Types.type_for("some.xml").first.content_type获取mime类型的另一种方法
怎么样
headers["Content-Type"] = "text/xml"
?希望对您有所帮助。
【讨论】:
render :file => @somedir + "/blah.xml", :content_type => Mime::XML
【讨论】:
根据http://api.rubyonrails.org/classes/Mime/Type.html,您可以这样指定:
render file: @somedir + "/blah.xml", mime_type: Mime::Type.lookup("text/xml")
【讨论】: