2016-10-25 58 views
1

我有許多日期字段呈現的模型視圖。DRY視圖strftime調用

我想要做的就是在每個日期字段上撥打strftime('%d.%m.%Y %H:%M')

- @items.each do |item| 
    = item.date_field.strftime('%d.%m.%Y %H:%M') 
    = item.date_field1.strftime('%d.%m.%Y %H:%M') 

關於如何幹這個的任何想法?我試着在我的模型中製作to_s方法,但不幸的是這不起作用。

更新:

我定義這個方法:

def to_s(date) 
    send(date).strftime('%d.%m.%Y %H:%M') 
end 

,所以我可以:

- @items.each do |item| 
    = item.to_s(:date_field) 
    = item.to_s(:date_field1) 
+1

的可能的複製[更改默認的日期和時間格式在Rails中4](http://stackoverflow.com/questions/17870762/changing-the-default-date-and-time-format-in-rails-4) –

+0

你可以發佈視圖或它的一個例子嗎? –

+0

@CdotStrifeVII 實施例: ' - @ items.each做|項|' '= item.date_field.strftime:'' =項( '%d%米%Y%H%M。')。 date_field1.strftime('%d。%m。%Y%H:%M')' '= ...' – SumLare

回答

4

你可以,如果你正在使用它創建一個幫助(在application_helper.rb應用廣泛)

選項1

def customized_time_format(time) 
    time.strftime('%d.%m.%Y %H:%M') 
end 

,並利用它在你的看法

- @items.each do |item| 
    = customized_time_format(item.date_field) 
    = customized_time_format(item.date_field1) 

1選項

# config/locales/en.yml 
en: 
    time: 
    formats: 
     customized: '%d.%m.%Y %H:%M' 

而且使用它

- @items.each do |item| 
    = l(item.date_field, format: :customized) 
    = l(item.date_field1, format: :customized) 
+0

這是一種好方法,但我只需要一種模式的這種方法。我想'customized_time_format'方法最好在我的模型中定義。 – SumLare

+0

@SumLare我會親自使用選項2,但如果您使用1,我不會將它放入您的模型中,如果您稍後需要在另一個模型上使用它,則必須移動它。 –

+0

選項2比IMO更好 –