只是一个非常简单的数据记录应用程序,用于记录&在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解决了这个问题。谢谢你的贡献。