以下是通过Interactive Ruby Interpreter运行以下代码时发生的情况:
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错误?
答案 0 :(得分:3)
@event.start_date
不是字符串,Date.parse
期望第一个参数为string
。
在irb
中,您正在向2015-03-22
提供字符串Date.parse
,并且成功了。但是在erb
中,它不是string
,而是Date
类型。
因此,请在strftime
中的@event.start_date
上使用erb
作为:
<% month_and_year = @event.start_date.strftime("%B %Y") %>