我收到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"
我不知道自己做错了什么。谢谢!
答案 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:
DateTime
或Time
I18n.l
。这是"%A %B %e, %Y"
的缩写,看起来它起作用的距离至少为rails 3.2.13(很难分辨出你正在使用的导轨)。
这样,如果你想支持不同的语言环境,那么日期都是为它设置的,更重要的是,它会将日期格式移出你的视图,所以如果你决定要一个不同的格式({例如,{1}}您可以在一个地方更改它,所有显示日期的视图都会更新。
注意:如果是Time
或DateTime
,您可能需要使用
<%= 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 ") %>