2017-07-26 40 views
0

我收到strftime的錯誤。如何在視圖中使用srtftime

我的看法是這樣的:

<%=room.date%>其作品併產生 「2017年7月27日」。

但是,我想將其轉換爲「2017年7月27日」。

<%= Date.parse(room.date).strftime("%B %e, %Y ") %>不工作,導致以下錯誤:

ActionView::Template::Error (no implicit conversion of Date into String)

我的模式是:

t.date  "date" 

我不知道我做錯了事情。謝謝!

回答

3

如果您room.date是日期的類型,你不應該試圖解析它。所以我建議先嚐試使用<%= room.date.strftime('%B %e, %Y')。請在下面評論,如果不行。

1

它要求一個字符串,而不是一個日期數據類型,它傳遞一個字符串,嘗試:

Date.parse(room.date.to_s).strftime("%B %e, %Y") 
+0

錯誤未再出現,但日期未顯示。不知道爲什麼。 – Acrux

+1

如果你需要在視圖中打印這樣的值,那麼你可以使用'room.date.strftime(「%B%e,%Y」)'作爲@knut提到的,試試看。 –

0

room.date是日期時,爲什麼要解析它?你可以直接使用日期。

你可以嘗試:

<%= room.date.strftime("%B %e, %Y ") %> 
3

只是拋出不同的帽子成環,你也可以使用

<%= l room.date, format: :long %> 

其中,默認情況下,使用"%B %d, %Y"但可以通過添加輕易改變進入你的config/locales/en.yml

en: 
    date: 
    formats: 
     long: "%B %e, %Y" 
    time: 
    formats: 
     long: "%B %e, %Y" 

使用date:如果它是一個Date對象或time:如果它是DateTimeTime。這是I18n.l的簡稱,看起來好像至少在rails 3.2.13之前工作(很難分辨出您正在使用哪個導軌)。

這樣,如果您想要支持不同的語言環境,則會爲其設置日期,可能更重要的是,它會將日期格式從視圖中移出,因此如果您決定要使用其他格式例如"%A %B %e, %Y"),您可以在一個地方更改它,並且所有顯示日期的視圖都會更新。

注:如果是TimeDateTime您可能需要使用替代

<%= l room.date, format: :date %> 

config/locales/en.yml

en: 
    time: 
    formats: 
     date: "%B %e, %Y" 

所以你format: :long仍顯示時間部分,當你希望它

相關問題