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

时间:2019-02-18 01:16:51

标签: ruby-on-rails ruby ruby-on-rails-5 rails-i18n

Object must be a Date, DateTime or Time object. nil given.
Extracted source (around line #23):                  

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

当我尝试使用空白日期进行保存时,会出现此错误,是否有很强的textsolution可以在不填写的情况下进行保存?

编辑:

my browser

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

my terminal

3 个答案:

答案 0 :(得分:1)

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

movie.errors.full_messages

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

答案 1 :(得分:1)

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

轻松但简短:

<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 %>

答案 2 :(得分:1)

您可以将默认值传递给localize

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

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