对象必须是Date,DateTime或Time对象。没有给出

问题描述 投票:1回答:3
Object must be a Date, DateTime or Time object. nil given.
Extracted source (around line #23):                  

        <td><%= localize(movie.release_date, format: :long) %></td>

当我尝试使用空白日期保存此错误时,是否有一个强大的文本解决方案,我可以保存而无需填写它?

编辑:

my browser

==========================================================================

my terminal

ruby-on-rails ruby ruby-on-rails-5 rails-i18n
3个回答
1
投票

您可以将默认值传递给localize

<td><%= localize(movie.release_date, format: :long, default: '-') %></td>

只要第一个参数是nil,就会返回默认值。


1
投票

在您尝试保存movie并且它失败后,查看生成的错误,并显示该对象上的错误,例如

movie.errors.full_messages

这应该会为您提供有关失败原因的更多详细信息。


1
投票

你的localize讨厌nil值,所以不要给它一个。

Hacky但简短:

<td><%= movie.release_date && localize(movie.release_date, format: :long) %></td>

好又长:

<% unless movie.release_date.nil? %>
  <td><%= localize(movie.release_date, format: :long) %></td>
<% end %>
© www.soinside.com 2019 - 2024. All rights reserved.