9

Bir datetime özniteliğine sahip bir model örneğim var. Ben kullanarak Bence görüntülemeden ediyorum:Bir Tarihin Rails 0 olarak biçimlendirilmesi

<%= @instance.date.to_date %> 

ama o kadar gösterir: Ben o kadar gösterilmesini istiyorum 2011-09-09

: 2011

, 9 Eylül Nasıl Yaparım Bunu yap?

Teşekkürler!

cevap

13

Bu size "9 Eylül 2011" verir. Eğer gerçekten gün ("inci", "rd", vs.) ordinal Gerekirse

, bunu yapabilirsiniz:

<%= @instance.date.strftime("%B #{@instance.date.day.ordinalize}, %Y") %> 
+0

Mükemmel! Teşekkür ederim! – goddamnyouryan

+0

bu aradığım çözüm. sadece sorun, bunu en.yml dosyasına nasıl eklerim? lambda ile i18n kullanabilmek istiyorum –

10

tarih stil elde etmek daha kolay yerleşik bir yöntem yoktur Arıyorsun.

<%= @instance.datetime.to_date.to_formatted_s :long_ordinal %> 

to_formatted_s yöntemi, varsayılan olarak çeşitli biçim özniteliği seçeneklerini kabul eder. eaxmple için Raylar API:

date.to_formatted_s(:db)   # => "2007-11-10" 
date.to_s(:db)      # => "2007-11-10" 

date.to_formatted_s(:short)   # => "10 Nov" 
date.to_formatted_s(:long)   # => "November 10, 2007" 
date.to_formatted_s(:long_ordinal) # => "November 10th, 2007" 
date.to_formatted_s(:rfc822)  # => "10 Nov 2007" 

Sen tam bir açıklama here görebilirsiniz.

ActiveSupport::Inflector.ordinalize(@instance.date.day) 
1

Raylar bir inflector olarak ActiveSupport yerleşik vardır En.yml içinde tanımladığınız biçimi kullanarak okunabilir bir biçime tarih. Sen yml dosyasında çeşitli biçimleri tanımlayabilirsiniz:

en: 
    date: 
    formats: 
     default: ! '%d.%m.%Y' 
     long: ! '%a, %e. %B %Y' 
     short: ! '%e. %b' 

senin görünümünde varsayılan bir daha başka biçimi kullanmak için kullanım:

<%=l @instance.date, format: :short %> 
7

olacağını Bunu yapmanın Raylar yolu

<%=l @instance.date %> 

"l" kullanmak "lokalize" kısaltmasıdır ve dönüşüm:

1

Ayrıca <% = time_tag zaman% var> raylar içinde

İlgili konular