undefined method `empty?' for nil:NilClass how to avoid it
大家好我有这个代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | @coursesFound = @user.available_courses @courses = [] for course in @coursesFound do @courseInGroups = course.user_groups for group in @courseInGroups do @group = UserGroup.find group.id if @group.users.map { |u| u.id }.include? @user.id @courses << course break end end end # Wenn ein Kurs keiner Gruppe hinzugefügt wurde if @courseInGroups.empty? @courses << course end |
在我的debian vm它工作正常但在我的实时系统上我得到了这个错误:
1 | undefined method `empty?' for nil:NilClass |
我怎么能避免这个?
如果此
然后这将不会执行
1 2 3 4 5 6 7 8 9 10 | for course in @coursesFound do @courseInGroups = course.user_groups for group in @courseInGroups do @group = UserGroup.find group.id if @group.users.map { |u| u.id }.include? @user.id @courses << course break end end end |
这意味着当你到达这里时
1 2 3 | if @courseInGroups.empty? @courses << course end |
所以你的快速解决方案就是
1 2 3 | if @courseInGroups && @courseInGroups.empty? @courses << course end |
使用rails时不要忘记
我没有分析你的代码,只是为了你,我和其他不经常使用这种方法的人,将它们混合然后来到这里 - 只是为了记住:
您还需要正确初始化对象。
1 | @courseInGroups = course.user_groups || [] |
如果正确初始化,则不会再出现
要摆脱
您可以使用
@ courseInGroups.try(:空?)
如果
http://apidock.com/rails/Object/try