Inserindo um calendário javascript para entrada de data no rails

Para inserir um calendário em uma aplicação rails, vamos utilizar o plugin Calendar Date Select. Ele é um calendário em Javascript que utiliza a biblioteca Prototype.

Algumas demonstrações do funcionamento podem ser vistas em http://electronicholas.com/calendar.

Para instalá-lo:

script/plugin install http://calendardateselect.googlecode.com/svn/tags/calendar_date_select

Após instalado o plugin voce deve inserir o calendário na view em que voce deseja:

No caso acima escolhemos a cor cinza (”silver”) mas também é possível escolher outras cores como vermelho (”red”) e azul (”blue”).

Insira também a biblioteca Prototype caso ela já não esteja incluída:

Agora é só inserir o código para o calendário como abaixo:

Existem várias opções de customização do calendário que podem ser encontradas no site oficial

Traduzindo o calendário para português

Para passar os dias da semana e a data para o formato d/M/Y deve-se ir no environment.rb e adicionar:

Obs.: O formato italiano corresponde ao formato (’d/M/Y’)

Deve-se adicionar o javascript correspondente à esse formato, incluindo na view:

Para a tradução para o português, deve-se criar o arquivo pt.js em public/javascripts/calendar_date_select/locale

pt.js

E para que o calendário adote o idioma português como configurado acima basta adicionar a variável

como mostrado abaixo.

5 comments ↓

#1 bruno on 07.07.08 at 8:32 pm

Fabiano,

Não estou utilizando nenhum tratamento especial. Utilizo o campo no mysql do tipo date ao invés de datetime. Para validação da data utilizo o plugin validates_date_time (http://agilewebdevelopment.com/plugins/validates_date_time).

#2 Fabiano on 08.03.08 at 1:21 am

Certo.. obrigado !
Jah fiz funcionar, usei um carinha diferente chamado Rails Date Kit.. a verdade é que optei por ele por motivos meramente estéticos e de eficiência sabe, ele cumpre a função :D
Meu problema era passar a data no formato Brazuca d/m/A mas dai em JS eu traduzo para ISO :P
Eu sei que podia fazer um tratamento muito melhor sobre isso no model, mas…. :)

#3 Fabiano on 08.03.08 at 1:23 am

Estou precisando seriamente de um calendário de tela inteira agora, você tem alguma sugestão ??
Se não vou adaptar esse plugin mesmo usando embedded => true

#4 bruno on 08.04.08 at 4:56 am

Fabiano,

Tenho usado o Calendar Date Select e ele tem me servido bem, por isso o recomendo. Uma possibilidade para colocar um calendário na tela inteira seria (como voce falou) utilizando o embedded => true . E caso voce queira modificar o seu visual basta alterar o css!

#5 Hugo Maia on 10.16.09 at 5:30 pm

Alguém sabe se tem como restringir os meses como se pode fazer com os anos (year_range)?

Leave a Comment