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:
- Que el archivo exista
- Comprobar que tipo de archivo es
- 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
Bitacoras.com
diciembre 3, 2013 at 5:18 pmInformació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…