Displaying Nested Objects

Hi,

I’ve got a question regarding my models in my Rails app. Let’s say I
have an object:

User

which has_many:

Thing1

and Thing1 has_many:

Thing2

and Thing2 has_one:

Thing3

When I go to display this in my template, like this:

<% @user.thing1.each do |c| %>

<% end %>

I get:

undefined method `name’ for nil:NilClass

I’m assuming this means there is no Thing3 object for this particular
Thing2 object.

I just bought Agile Development with Rails and am starting to go
through that…it’s surely noob question but can someone set me
straight?

Thanks!

Jon

Title Date Event
<%=h c.title %> <%=h c.date %> <% c.thing2.each do |be| %> <%=h be.thing3.name %> <% end %>
Thing2
<%=h be.workout_type %>

On 7 March 2010 00:26, ObjectEvolution [email protected]
wrote:

undefined method `name’ for nil:NilClass

I’m assuming this means there is no Thing3 object for this particular
Thing2 object.

you’re quite correct - there’s no “thing3” linked to a given “thing 2”.
If there supposed to be an associated object there, then something’s
gone wrong when you’ve created your objects, but if it’s a case that
there may or may not be a Thing3, then a simple “guard” would suffice.

<%=h be.thing3.name if be.thing3 %>

Perfect…thanks!