если значение из контроллера равно нулю, как я могу отобразить 0? - PullRequest
1 голос
/ 29 сентября 2010

Я создаю отчет, в котором проверяется количество сообщений, отправленных за период времени:

Я отображаю его в виде следующим образом:

<td><%= @emails_sent.size %></td>

И он генерируется в контроллере следующим образом:

   @sent_emails = ContactEmail.all(:conditions => ['date_sent >= ? and date_sent <= ?', @monday, @friday])

Но иногда теперь электронные письма были отправлены, что делает его равным нулю, что приводит к тому, что View не работает.

Как решить эту проблему, чтобы «ноль», когда метод .find ничего не выдумал, переходил в 0 вместо того, чтобы думать, что это ноль?

Ответы [ 2 ]

2 голосов
/ 29 сентября 2010

Когда вы используете решение @neutrino, оно может выдать ошибку (если выбрано значение null), как вы думаете,

<%= @emails_sent.size %>

причина в том, что если выбор равен нулю, он возвращает '0', но, по вашему мнению, вы ожидаете массив

у вас есть два варианта

1 - слегка изменить код @neutrino

@sent_emails = ContactEmail.all(:conditions => ['date_sent >= ? and date_sent <= ?', @monday, @friday]) || []

** ПРИМЕЧАНИЕ [] вместо 0

2 - Получить счетчик из самого sql и избавиться от видимого размера.

ура

Sameera

Обновление - изменен Array.new на [] #thanks @ gertas

2 голосов
/ 29 сентября 2010

Разве ты не можешь просто сделать

@sent_emails = ContactEmail.all(:conditions => ['date_sent >= ? and date_sent <= ?', @monday, @friday]) || 0
...