14 abril 2011

Rails - Formatando data para exibição

Dica para formatar data e hora para exibição no Rails.

No arquivo /config/environment.rb crie entradas de acordo com a formatação que você precisa, como por exemplo;
Time::DATE_FORMATS[:data_br] = "%d/%m/%Y"
Time::DATE_FORMATS[:dia_semana] = "%A"
Time::DATE_FORMATS[:hora] = "%H:%M horas"
Feito isso, agora podemos utilizar a formatação chamando o método to_s para a data em questão passando como parâmetro o símbolo definido, como por exemplo:
<%= @objeto.data.to_s(:dia_semana) %> 
O resultado é o dia da semana escrito por extenso.

Rails - Exibindo conteúdo HTML gravado no banco de dados

As vezes precisamos salvar algum conteúdo HTML (gerado por um editor HTML por exemplo) no banco de dados e depois recuperá-lo e exibir em uma página web. Nos projetos Rails que tenho trabalhado ultimamente tenho essa necessidade, porém quando ia exibir esse conteúdo, o mesmo era exibido como texto puro mostrando todas as tags HTML.

A solução para isso foi utilizar o helper "raw" do Rails, o qual faz com que as tags HTML sejam corretamente interpretadas. Para utilizar pasta fazer o seguinte:

<%= raw @objeto.texto_html %>

Trabalhando com SVG e JavaScript

No projeto que estou trabalhando atualmente tenho a necessidade de criar um editor de capas para livros online. Como não encontrei nada que me servisse já pronto, acabei por criando um editor simples do zero.

Pelas características do editor, cheguei a conclusão de que o melhor seria criá-lo utilizando SVG, e optei pela biblioteca Raphaël JS para trabalhar com SVG via JavaScript.

Utilizar a biblioteca é simples, tem bastante recursos, e o que não está descrito na documentação pode ser encontrado com uma pesquisa no Google e uma boa lida na especificação do SVG.

Uma coisa muito interessante no Raphaël JS é a possibilidade de se utilizar plugins, e um plugin muito interessante que precisei utilizar é o raphael.serialize, que tem a função de exportar para json os dados SVG do trabalho feito com a biblioteca, e também de importar os dados em formato json novamente para a biblioteca Raphaël JS.