Rails 4. created_at 字段的 nil:NilClass 的未定义方法 `strftime'

Rails 4. Undefined method `strftime' for nil:NilClass for created_at field

只是一个非常简单的数据记录应用程序,用于记录和显示 Rails 中的时间表条目 4. 在意识到记录的时间条目比我的时区早 2 小时后,我设置了 config.time_zone和 config.active_record.default_timezone 值分别为 'Berlin'。

然而,在这次攻击之后,ActiveRecord 开始将毫秒数据添加到 'created_at' sqlite-DB-column,结果引发了 "undefined method `strftime' for nil:NilClass" 显示创建日期时间的错误。 这就是我的病态观点:

<table>
    <% @timesheets.each do |t| %>
        <tr>
        <td><%= t.user.name %></td>
        <td><%= t.t_lines %> sor</td>
        <td><%= t.t_time %> perc</td>
        <td><%= t.created_at.strftime('%Y.%m.%d %H:%M') %></td>
        </tr>
    <% end %>
</table>

有没有办法停止rails记录精确时间数据,或者其他解决方案? 提前致谢!

t.created_at.try(:strftime,'%Y.%m.%d %H:%M')

您可以使用这样的条件:

   <% if t.created_at.present? %>
        <td><%= t.created_at.strftime('%Y.%m.%d %H:%M') %></td>
    <% else %>
        <td><p> Time Not Available </p></td>
    <% end %>

在找到解决方案之前进行了大量研究。我也尝试过完全重置数据库但没有成功。 然后我找到了这个:

Rails 4 model returns always nil

application.rb中config.active_record.default_timezone的值不能设置为特定的时区,而是像:local或:utc这样的符号。

application.rb:

config.time_zone = 'Berlin'
config.active_record.default_timezone = :local

此更改和进一步的 db:reset 解决了问题。 感谢您的贡献。