Renderizar un archivo en Rails 3.2

Un dia tube la necesidad de mostrar un archivo en vez de una vista en rails por que se generan y se guardan para no usar procesamiento del servidor solo ocupaba leer ese archivo y mostrarlo tal cual sin ningún tipo de modificación, mi archivo era xml yo tenia una vista xml, por si no se generaba el archivo mostraba la vista y ahi si usaba poder de procesamiento del servidor pero bueno para renderizar un archivo se tiene que hacer lo siguiente:

  1. Que el archivo exista
  2. Comprobar que tipo de archivo es
  3. Renderizar

Mas o menos son los pasos que tenemos que seguir bueno aqui va el codigo:

 

    file_path = "#{Rails.root}/public/{@post.title}.xml"
     xml_file = File.new(file_path, 'r') if File::exists?( file_path )

respond_to do |format|
    if !xml_file
        format.xml 
      else
        extname = File.extname(xml_file)[1..-1]
       mime_type = Mime::Type.lookup_by_extension(extname)
      content_type = mime_type.to_s unless mime_type.nil?
       format.xml {render :file => file_path, :content_type => content_type}

        end
end

Bueno explicado por lineas seria algo asi

     file_path = "#{Rails.root}/public/{@post.title}.xml"
     xml_file = File.new(file_path, 'r') if File::exists?( file_path )

Tenemos la ruta del archivo y luego preguntamos si existe si existe la variable xml_file tendra el contenido del archivo de lo contrario false.

if !xml_file
        format.xml 

Si no existe el archivo tendremos que procesar los datos en la vista.

        extname = File.extname(xml_file)[1..-1]

Extramos la extencion del archivo en este caso es un xml.

            mime_type = Mime::Type.lookup_by_extension(extname)
          content_type = mime_type.to_s unless mime_type.nil?

obtenemos el tipo de de mime es osea algo asi para saber si es xml y el content_type para ver si el contenido es efectivamente un xml.

format.xml {render :file => file_path, :content_type => content_type}

Al final renderizamos el archivo enviando la ruta(file_path) y el tipo de contenido(content_type)

Listo

1 comment
  1. Bitacoras.com
    diciembre 3, 2013 at 5:18 pm

    Información Bitacoras.com

    Valora en Bitacoras.com: Un dia tube la necesidad de mostrar un archivo en vez de una vista en rails por que se generan y se guardan para no usar procesamiento del servidor solo ocupaba leer ese archivo y mostrarlo tal cual sin ningún tipo de modifi…

    Reply
Leave a Reply

Your email address will not be published. Required fields are marked *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.