Formatando datas no Ruby on Rails
31 de Agosto de 2007
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" - Permalink
- Trackback
- Feed dos comentários
- Ao som de: Rancid – The Way I Feel
Textos escritos por
Comentários #
Excelente dica.
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?
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/
Legal, obrigado pela dica.
Legal, gostei da dica!
[...] Precisa formatar datas na sua aplicação Rails? [...]
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.
Valeu pela dica, muito boa!!!
Ótima dica!!!
Valeuuu :D
Deixe um comentário