Объект должен быть объектом Date, DateTime или Time. ноль дан

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

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

когда я пытаюсь сохранить с пустой датой, возникает эта ошибка, существует ли сильное решение для текстов, где я могу сохранить без необходимости ее заполнения?

РЕДАКТИРОВАТЬ:

h ttps://s tackru.com/images/c4093cac1f309d5117c49155e4c7882ffeece166.png

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

h ttps://s tackru.com/images/9d9d0e062504b828c7d17d8ae951ee41c81adb68.png

3 ответа

Решение

Вы можете передать значение по умолчанию localize:

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

Значение по умолчанию возвращается всякий раз, когда первый аргумент nil,

После того, как вы попытаетесь сохранить movie и это не удается, посмотрите на полученную ошибку, а также отобразите ошибки на этом объекте, например

movie.errors.full_messages

Это должно дать вам более подробную информацию о том, почему это не удалось.

Ваш 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 %>
Другие вопросы по тегам