Объект должен быть объектом Date, DateTime или Time.ноль дан - PullRequest
0 голосов
/ 18 февраля 2019
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

Ответы [ 3 ]

0 голосов
/ 18 февраля 2019

Ваши 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 %>
0 голосов
/ 18 февраля 2019

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

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

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

0 голосов
/ 18 февраля 2019

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

movie.errors.full_messages

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

...