如果控制器的值为nil,如何显示0?

时间:2010-09-29 03:59:18

标签: ruby-on-rails find null

我正在创建一份报告,查看在一段时间内发送的电子邮件数量:

我在视图中显示如下:

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

它在Controller中生成如下:

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

但有时现在已经发送了电子邮件,这使得它为零,这导致视图出现问题。

解决这个问题的方法是什么,以便当.find方法出现时,“nil”没有任何内容会转到0而不是认为它是'nil?

2 个答案:

答案 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