2011-11-16 145 views
0

我在使用日期時間格式時遇到問題。當前情況: 我有一個帶有日期時間的幾個字段的數據庫。格式就像2011-11-16 15:07:00 UTC。我希望在整個應用程序中更改此格式。我不在乎它是否以這種方式保存在數據庫中,但我希望它在相應的視圖(我來自德國,因此將是16.11.2011 15:07)中對客戶更友好一點。 我試圖使用I18n,它至少爲幾個部分工作。我創建了一個語言環境(並將default_locale添加到application.rb中)。有沒有辦法讓rails使用這個locale而不改變相應的視圖?我找不到它,所以我(成功地)試圖如下:如何更改視圖的日期時間格式(使用i18n?)

對於我的索引視圖我在 application_helper.rb:

module ApplicationHelper 
     def nice_date_form(the_date) 
      if !the_date.nil? 
      I18n.l the_date, :format => :short 
      end 
     end 
    end 

問題一點點功能工作出現了,當我試圖在編輯/新視圖(_form.html.erb)中使用該方法時,它根本不起作用。過了一會兒,我遇到了關於虛擬屬性的RailsCast,這至少暫時解決了我的問題。我可以在模型中使用getter和setter方法,但是對於不同的表和字段來說,這將會是一大堆重複。

_form.html.erb:

(...) 
    <div class="field"> 
    <%= f.label :abfahrt %><br /> 
    <%= f.text_field :nice_date_edit %> 
    </div> 
    (...) 

長話短說:我尋覓了很長一段時間,現在,不知道從哪裏繼續。我想這不是解決這個問題的最好方法嗎?有沒有一種方法可以簡化併爲日期時間設置一種軌道寬度的格式?

一些提示將不勝感激!提前致謝。

基督教

回答

2

可以使用的strftime()在視圖標籤(客戶友好在相應的視圖)格式化日期時間。

您的輔助方法,可能是

module ApplicationHelper 
    def nice_date_form(the_date) 
     if !the_date.nil? 
     the_date.strftime(「%d.%m.%y %H:%M」) 
     end 
    end 
end 

詳細看一看Rails Datetime Format

+0

非常感謝!我之前嘗試過,但顯然沒有改變這個觀點來做出這個工作,只是放棄了這一點,並對虛擬屬性給予了一點關注。 – Christian