这是我
通过交互式Ruby解释器运行以下代码时发生的情况:
start_date = '2015-03-22'
month_and_year = Date.parse(start_date).strftime("%B %Y")
puts month_and_year
输出:
March 2015
我的一个视图中有相同的代码:
<% require 'date' %>
...........
<% logger.info(@event.start_date ) %>
<% start_date = @event.start_date %>
Line 64: <% logger.info(__LINE__) %>
<% month_and_year = Date.parse(start_date).strftime("%B %Y") %>
<% logger.info(__LINE__) %>
下面是日志文件输出:
2015-03-22
64
Rendered events/_event_sidebar.html.erb (87.3ms)
Rendered events/show.html.erb within layouts/application (545.0ms)
Completed 500 Internal Server Error in 1099ms
为什么相同的代码片段会导致视图中出现 500 错误?
@event.start_date
不是字符串,Date.parse
期望第一个参数string
。
在你的irb
中,你正在向Date.parse
提供字符串2015-03-22
,并且它成功了。 但在你的erb
,它不是一个string
,而可能是一个Date
类型。
因此,在erb
@event.start_date
上使用strftime
作为:
<% month_and_year = @event.start_date.strftime("%B %Y") %>