Imagine que você tenha um campo datetime e que você queira exibir logo abaixo de um post de blog. Você poderia criar um helper para fazer isso:

class PostsHelper
  def post_date(date)
    # formatting date: Aug, 31 2007 - 9:55PM
    date.strftime("posted on %b, %m %Y - %H:%M")
  end
end

E em seu template poderia chamar algo como:

<%= post_date @post.created_at %>

Você também poderia fazer esta formatação no modelo, utilizando o método after_find:

class Post < ActiveRecord::Base
  private
    def after_find
      self.created_at = created_at.strftime("posted on %b, %m %Y - %H:%M")
    end
end

Porém, a maneira mais interessante de se formatar datas no Rails, é utilizando o método to_s; tudo o que você precisa fazer é definir um novo formato. Para fazer isso, adicione a seguinte linha ao seu arquivo "environment.rb":

Time::DATE_FORMATS[:post] = "posted on %b, %m %Y - %I:%M%p"

Para exibir a data devidamente formatada, basta chamar o método to_s passando o formato que você quer utilizar.

<%= @post.created_at.to_s(:post) %>

Lembre-se que você pode definir quantos formatos quiser:

Time::DATE_FORMATS[:archive] = "%B/%Y"
Time::DATE_FORMATS[:updated] = "updated on %b, %m %Y - %I:%M%p"

Comentários #

#1 Carlos Brando disse:
31 Ago 07, 11:16PM

Excelente dica.

#2 Caio Moritz Ronchi disse:
02 Set 07, 11:44AM

Olá, Nando

Muito boa essa sua dica, mas me diga uma coisa: se sua aplicação estivesse preocupada com i18n, você não poderia usar essa abordagem, certo? E se não, então qual usaria?

#3 Nando Vieira disse:
02 Set 07, 02:41PM

Você pode usar esta abordagem sim. Basta ter um arquivo específico para as localizações, onde você pode definir estes formatos e colocar os nomes dos dias/meses traduzidos[1].

[1] http://simplesideias.com.br/localizacao-de-mensagens-de-erro-datas-no-rails/

#4 Caio Moritz Ronchi disse:
02 Set 07, 07:25PM

Legal, obrigado pela dica.

#5 Rafael Jamur disse:
15 Set 07, 05:37PM

Legal, gostei da dica!

#6 Alguns bits de tecnologia :D | Blog do Urubatan disse:
11 Out 07, 01:07PM

[...] Precisa formatar datas na sua aplicação Rails? [...]

#7 Alamo Carlos disse:
19 Set 08, 11:00PM

Meu camarada, sou novo em ruby, como faço para no form digitar apenas hora...

label for="table_horarioInicio"Horarioinicio:
datetime_select 'table', 'horarioInicio'

obrigado.

#8 Filipe Ricardo disse:
03 Out 09, 01:37PM

Valeu pela dica, muito boa!!!

#9 André disse:
04 Fev 10, 10:21AM

Ótima dica!!!

Valeuuu :D

Deixe um comentário





Não é aceito código HTML: adicione-o no pastie.org ou paste.milk-it.net e poste apenas o link.

Se este é seu primeiro comentário, ele terá que ser aprovado antes de ser exibido.

jQuery: Dominando o framework

Você quer aprender a usar jQuery de verdade? Então chegou a hora! Neste workshop você verá como funciona este framework de JavaScript, entendendo todos os aspectos que fazem do jQuery uma das melhores ferramentas para desenvolvimento de interfaces.

Saiba mais Fechar

Conheça também o HOWTO