I have a problem with rendering a partial. Despite my best efforts the
object I pass in using the :object attribute is valid just before I
call the [shared] partial, but somehow becomes nil inside the partial.
Background:
I have a "customer" object that includes an "address" model
object by
aggregation. I render the address portion via a partial, so that I can
re-use addresses in other models.
Customer model:
composed_of :address,
:class_name => ''Address'',
:mapping => [ # Database Ruby
[ :street, :street ],
...
[ :country_id, :country_id ]
]
Customer show.rhtml (with extra debug statement):
...
<tr>
<td><b>Website</b></td>
<td><%= link_to( @customer.website_url, :url =>
@customer.website_url
) %>
</tr>
<%= h( @customer.address.street ) %> <!-- This debug statement renders
the customer''s street address okay -->
<%= render( :partial => ''/addresses/address_show'',
:object =>
@customer.address )%>
...
/addresses/_address_show.rhtml: (The partial)
<tr>
<td><b>Address:</b></td>
<td><%= h( @address_show.street ) %></td> <!-- I get an
error
attempting to access nil.street -->
</tr>
relevant action from the Customer controller:
def show
@customer = Customer.find(params[:id])
respond_to do |format|
format.html # show.rhtml
format.xml { render :xml => @customer.to_xml } # Not using this
at the moment
end
end
I don''t have a variable called address_show anywhere in the controller
(I read another post that implied having the partial name match a
variable name in the controller might confuse things.)
The error message:
You have a nil object when you didn''t expect it!
The error occurred while evaluating nil.street
Extracted source (around line #3):
...
2: <td><b>Address:</b></td>
3: <td><%= h( @address_show.street ) %></td>
Can anyone explain what I''m doing wrong: why @customer.address appears
to be valid in one line of the customer view, but ends up in passing
nil to the partial in the next line?
Confused,
-Bruce
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---