2017-07-26 38 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仍显示时间部分,当你希望它

相关问题