Já faz um tempo que eu não posto nada, o último mês foi bem corrido, comecei em um novo emprego (dessa vez com Ruby on Rails), além das provas na faculdade, entre outros. Mas estou cheio de assuntos novos para tratar no blog.
Antes de mais nada queria parabenizar o pessoal do GURU-SP que fez mais um excelente evento no final de semana passado, cheio de gente e com o conteúdo muito interessante (testes). Se você ainda não participa do grupo não deixe de dar uma olhada.
Hoje gostaria de falar pra vocês a respeito de um problema muito estranho que tive para renderizar arquivos xls (Excel) no serviço.
Fizemos uma reelaboração do módulo de relatórios de nossa aplicação recentemente e nesse novo modelo é possível visualizar um relatório nos formatos: html, pdf e xls.
Testamos no nosso ambiente de desenvolvimento (Linux ou Mac OS X com Firefox) e tudo parecia correr tudo bem.
Para fazer com que sua aplicação renderize views no formato do Excel é bem simples, basta adicionar no arquivo config/initializers/mime_types.rb a linha:
Mime::Type.register "application/vnd.ms-excel", :xlsE na hora de renderizar no controller:

Aí basta criar o arquivo com o nome no formato:
nome_da_action.xls.rbNesse arquivo você pode escrever uma tabela no formato html, ou até mesmo criar um arquivo no formato xml, como o Ary Djmal mostra nesse post:
http://arydjmal.com/2008/6/8/export-to-excel-in-rails-2
Hoje, com a aplicação em produção, descobrimos que o Internet Explorer apresenta um comportamento completamente estranho em relação a esse tipo de tratamento.
Quando clicavam no link para exibir a página no formato html, por algum motivo estranho o IE tentava sempre renderizar o formato xls ao invés do html.
Para resolver esse problema utilizamos a solução sugerida pelo Ary Djmal no link que mencionei acima (thank you man), que foi adicionar a seguinte condição na hora de renderizar:

Dessa forma funciona no IE e continua funcionando nos outros navegadores.
Como a informação foi muito útil para mim, resolvi passar ela adiante pra quem passar pelo mesmo problema.
Não sei por que ele acontece, se alguêm souber estou muito interessado em saber.
No mais, isso só aumenta meu desprezo pelo Internet Explorer.
Espero que o post ajude, tenho mais alguns assuntos interessantes que gostaria de escrever mas exigem um pouco mais de tempo, vou tentar escrever esse final de semana.
Abraços.


0 comentários:
Postar um comentário