Eu estou desenvolvendo uma aplicação que precisa trabalhar com datas com I18n e fazer conversões para salvar a data no banco de dados e exibir para o usuário de acordo com o seu idioma.
Eu estou usando o Date Picker do jQuery em um campo do tipo text_field.

Vou mostrar um esboço de como eu fiz isso, em primeiro lugar eu defini no arquivo config/environment.rb o idioma:
config.i18n.default_locale = 'pt-BR'
Depois eu defini no arquivo config/locales/pt-BR.yml os formatos de data:
pt-BR:
date:
formats:
default: "%d/%m/%Y"
short: "%d de %B"
long: "%d de %B de %Y"
day_names: [Domingo, Segunda, Terça, Quarta, Quinta, Sexta, Sábado]
abbr_day_names: [Dom, Seg, Ter, Qua, Qui, Sex, Sáb]
month_names: [~, Janeiro, Fevereiro, Março, Abril, Maio, Junho, Julho, Agosto, Setembro, Outubro, Novembro, Dezembro]
abbr_month_names: [~, Jan, Fev, Mar, Abr, Mai, Jun, Jul, Ago, Set, Out, Nov, Dez]
order: [ :day, :month, :year ]No meu formulário eu deixei assim:
<% content_for :javascripts do %> <%= include_jquery %> <%= javascript_include_tag "jquery.maskedinput-1.2.2.min" %> <% javascript_tag do %> $(document).ready(function() { // Adiciona date picker ao campo data de nascimento $.datepicker.setDefaults($.extend({showMonthAfterYear: false}, $.datepicker.regional['<%= I18n.locale %>'])); $("#investor_date_of_birth").datepicker({ showOn: 'both', buttonImage: '/images/calendar.gif', buttonImageOnly: false, buttonText: '<%= t('ui.admin.crud.datepicker_button_text') %>', changeMonth: true, changeYear: true, yearRange: '1900:<%= Time.now.year %>' }); // Adiciona mascara ao campo data de nascimento $("#investor_date_of_birth").mask("99/99/9999"); }); <% end %> <% end %> <% form_for [:admin, @investor] do |f| -%> <%= f.error_messages %> <%= f.label :date_of_birth %> <% if @investor.new_record? %> <%= f.text_field :date_of_birth, :class => "smallInput" %> <% else %> <%= f.text_field :date_of_birth, :value => l(@investor.date_of_birth, :format => :default), :class => "smallInput" %> <% end %> <% end %>
Caso exista o registro é realizado a conversão para exibir a data corretamente no formulário, não é necessário fazer conversão para salvar no banco de dados, o Rails já faz isso automaticamente.
Se você gostou desse texto e acha que ajudou você, me recomende:
.
















