控制器随机返回错误

时间:2013-12-20 16:42:40

标签: ruby-on-rails ruby-on-rails-3 loops if-statement

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

答案 0 :(得分:1)

看起来你有没有user_id的证书记录。删除该记录,或者更好的是,在证书模型中添加一些验证以确保填充此字段。

或者,如果您将If行更改为if (User.find(@id))

,则第二个代码块将起作用