我正在创建一份报告,查看在一段时间内发送的电子邮件数量:
我在视图中显示如下:
<td><%= @emails_sent.size %></td>
它在Controller中生成如下:
@sent_emails = ContactEmail.all(:conditions => ['date_sent >= ? and date_sent <= ?', @monday, @friday])
但有时现在已经发送了电子邮件,这使得它为零,这导致视图出现问题。
解决这个问题的方法是什么,以便当.find方法出现时,“nil”没有任何内容会转到0而不是认为它是'nil?
答案 0 :(得分:2)
你不能这样做吗
@sent_emails = ContactEmail.all(:conditions => ['date_sent >= ? and date_sent <= ?', @monday, @friday]) || 0
答案 1 :(得分:2)
当您使用@neutrino解决方案时,它可能会给您一个错误(如果select为null),就像您在视图中调用一样
<%= @emails_sent.size %>
原因是如果选择为nil,则返回'0',但在视图中你需要一个数组
你有两个选择
1 - 稍微修改@neutrino代码
@sent_emails = ContactEmail.all(:conditions => ['date_sent >= ? and date_sent <= ?', @monday, @friday]) || []
**注意[]而不是0
2 - 从sql本身获取计数并删除视图中的.size
欢呼声
sameera
更新 - 将Array.new更改为[] #thanks @gertas