视图内与 IRB 中的不同 Ruby 行为


这是我

通过交互式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") %>

最新更新