如何在视图中使用srtftime

时间:2017-07-26 20:32:17

标签: ruby-on-rails ruby

我收到strftime的错误。

我的观点如下:

<%=room.date%>工作和收益&#34; 2017-07-27&#34;。

但是,我希望将其转换为&#34; 2017年7月27日&#34;。

<%= Date.parse(room.date).strftime("%B %e, %Y ") %>不起作用并导致以下错误:

  

ActionView :: Template :: Error(没有将Date隐式转换为   字符串)

我的架构是:

t.date     "date"

我不知道自己做错了什么。谢谢!

4 个答案:

答案 0 :(得分:3)

如果您的room.date是日期类型,则不应尝试解析它。所以我建议先尝试使用<%= room.date.strftime('%B %e, %Y')。如果那不起作用,请在下面评论。

答案 1 :(得分: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。这是"%A %B %e, %Y"的缩写,看起来它起作用的距离至少为rails 3.2.13(很难分辨出你正在使用的导轨)。

这样,如果你想支持不同的语言环境,那么日期都是为它设置的,更重要的是,它会将日期格式移出你的视图,所以如果你决定要一个不同的格式({例如,{1}}您可以在一个地方更改它,所有显示日期的视图都会更新。

注意:如果是TimeDateTime,您可能需要使用

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

并在config/locales/en.yml

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

所以您的format: :long仍然会显示您想要的时间部分

答案 2 :(得分:1)

它要求String而不是Date数据类型,传递一个String,尝试使用:

IAC

答案 3 :(得分:0)

room.date是日期时,您为什么要解析它?您可以直接使用日期。

你可以尝试:

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