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.

Do NOT follow this link or you will be banned from the site!
WP2Social Auto Publish Powered By : XYZScripts.com