在軌

2008-11-18 41 views
17

MIME類型渲染文件下面的代碼:在軌

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

...但由此產生的MIME類型是text/html的時候我在Firebug檢查。在這種情況下如何指定MIME類型?

回答

2

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

+0

謝謝,但請求沒有擴展名,我認爲responds_to使用擴展名來確定格式。我錯了嗎? – user38684 2008-11-18 21:01:27

34

實際上有兩種方式來設置內容類型(我認爲這是你的意思是通過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 

希望這會有所幫助!

+0

從文件名/路徑MIME :: Types.type_for(「some.xml」)獲取MIME類型的替代方法。first.content_type` – 2016-03-21 10:05:43

3

什麼

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

?希望有所幫助。

16
render :file => @somedir + "/blah.xml", :content_type => Mime::XML