nil object problem

This is a repost as I had zero replies to my first email. This problem is driving me mad but it has to be a simple solution that I just can;t see.

Can someone please tell me what the difference is between the following bits of code …

<% @swimming_class.lessons.each do |lesson| %> <% lesson.lesson_register.attendees.each do |att| %> <%= att.enrollee_id %>
<% end %> <% end %>

<% @swimming_class.lessons.each do |lesson| %> <% lesson.lesson_register.attendees[0].enrollee_id %> <% end %>

Thsnk you

This is a repost as I had zero replies to my first email. This problem is driving me mad but it has to be a simple solution that I just can;t see.

Can someone please tell me what the difference is between the following bits of code ....

<!-- this outputs the correct result --> <% @swimming_class.lessons.each do |lesson| %> <% lesson.lesson_register.attendees.each do |att| %> <%= att.enrollee_id %> <br /> <% end %> <% end %>

<!-- the following outputs

You have a nil object when you didn't expect it! The error occurred while evaluating nil.enrollee_id

--> <% @swimming_class.lessons.each do |lesson| %> <% lesson.lesson_register.attendees[0].enrollee_id %> <% end %>

if a lesson register has no attendees the second snippet will try to access it anyway whereas the first won't

Fred

Frederick,

Thanks for getting back but you’re missing the point, they’re working on the same data.

The .each block iterates over the data correctly but the same data throws the nil object error when I index the item.

That’s the problem.

-Ants

Frederick,

Thanks for getting back but you're missing the point, they're working on the same data.

I realise.

The .each block iterates over the data correctly but the same data throws the nil object error when I index the item.

If the array is empty then each will be a no-op, unlike accessing [0]. Sounds like somewhere there is an item with no attendees.

Fred

Yes, you’re right!

I won’t go into where the mistake was but although the problem was in the code I submitted, the error (just my way of thinking, was in another part of the code)

So what you said got me thinking and I addressed another part of the code and found the error.

Merci!!