2013-12-20 62 views
0

Ruby on Rails 3控制器随机返回错误

在我的控制器中index()是我定义的实例变量。昨天这工作得很好。今天,我收到此错误:

Couldn't find User without an ID 
app/controllers/grandstreamers/resellers_controller.rb:7:in `block in index' 
app/controllers/grandstreamers/resellers_controller.rb:5:in `each' 
app/controllers/grandstreamers/resellers_controller.rb:5:in `index' 

这里是我的控制器代码:

4 @certs = Certificate.all 
5 @certs.each do |h| 
6 @id = h.user_id 
7 if @train = (User.find(@id).reseller_id) 
8 end 
9 end 

为什么试图找到没有ID的用户?这是一件好事。我希望我的用户有ID。

如果我删除循环错误消失了。我也试过:

@certs = Certificate.all 
@certs.each do |h| 
    @id = h.user_id 
    if (User.find(@id).reseller_id) 
    @train == User.find(@id).reseller_id 
    end 
end 

同样的错误,有什么建议吗?谢谢

+1

你的第二个代码块将工作看起来你有没有为user_id证书记录。这对你的模型应该如何工作有效吗? – Dhaulagiri

+1

如果您将If行更改为此if'User.find(@id)' – Dhaulagiri

+0

您的第二个代码块将工作您是正确的。我摧毁了它,一切都很好。谢谢!作为回答发布。 – DDDD

回答

1

看起来你有没有user_id的证书记录。要么删除该记录,要么更好地向证书模型添加一些验证以确保填充此字段。

另外,如果你改变了。如果行if (User.find(@id))

相关问题