导轨 4.未定义的方法'strftime' for nil:NilClass for created_at



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

然而,在此黑客之后,ActiveRecord开始将毫秒数据添加到'created_at' sqlite- db -列中,结果抛出"未定义方法' 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>

是否有办法停止轨道记录精确的时间数据,或其他解决方案?提前感谢!

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模型总是返回nil

应用程序中config.active_record.default_timezone的值。Rb不能被设置为特定的时区,而是像:local或:utc这样的符号。

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

这个更改和进一步的db:reset解决了这个问题。谢谢你的贡献。

相关内容

最新更新