Рендеринг файла с MIME Type в рельсах - PullRequest
17 голосов
/ 18 ноября 2008

Вот код:

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

... но полученный MIME-тип text / html при проверке в FireBug. Как мне указать тип MIME в этом случае?

Ответы [ 5 ]

34 голосов
/ 19 ноября 2008

На самом деле есть два способа установить тип содержимого (я думаю, это то, что вы подразумеваете под типом 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

Надеюсь, это поможет!

16 голосов
/ 09 июля 2009
render :file => @somedir + "/blah.xml", :content_type => Mime::XML
3 голосов
/ 19 ноября 2008

А как же

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

? Надеюсь, это поможет.

2 голосов
/ 18 ноября 2008

Взгляните здесь . В основном вам нужно использовать render: xml => blah.to_xml

0 голосов
/ 16 июля 2018

За http://api.rubyonrails.org/classes/Mime/Type.html, вы можете указать это так:

render file: @somedir + "/blah.xml", mime_type: Mime::Type.lookup("text/xml")  
...