我似乎无法理解为什么当我尝试对我的方法调用count时出现此错误消息?这是我的代码
<div class="container">
<h2>Statistics</h2>
<hr />
<h3 class="total-number">Total Signups: <%= @engaged %></h3>
<h3 class='total-number'> All Subscribed People: <%= @person %></h3>
<hr />
<p class='total-number'> Visitor group: <%= @visitor.people.count %></p>
<p class='total-number'> Dance group: <%= @dance.people.count %></p>
<p class='total-number'> Staff group: <%= @staff.people.count %></p>
<p class='total-number'> Volunteer group: <%= @volunteer.people.count %></p>
<hr />
<p><%= link_to "Send Message", root_path %></p>
</div>
这是我的控制器
def subscribed_num
@person = Person.subscribed.count
@engaged = Person.count
@dance = Group.find_by(name: "dance")
@visitor = Group.find_by(name: "visitor")
@volunteer = Group.find_by(name: "volunteer")
@staff = Group.find_by(name: "staff")
end
看起来很简单,但我可能做错了。
答案 0 :(得分:3)
Group.find_by(name: 'something')
将返回nil
。
所以游客,舞蹈,工作人员或志愿者之一似乎不存在。
处理此类情况的一种方法是使用Null Object来表示缺少某个群组。
空组可能总是有一个空数组。
以下是使用Avdi Grimm编写的优秀Naught gem的示例:
NullGroup = Naught.build do |builder|
def people
[]
end
end
# controller
def subscribed_num
@person = Person.subscribed.count
@engaged = Person.count
@dance = Group.find_by(name: "dance") || NullGroup.new
@visitor = Group.find_by(name: "visitor") || NullGroup.new
@volunteer = Group.find_by(name: "volunteer") || NullGroup.new
@staff = Group.find_by(name: "staff") || NullGroup.new
end
#