Forum: Ruby on Rails partials: what variable name should you use?

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
7stud -. (Guest)
on 2009-05-04 19:11
Here's a call to a partial:

 <%= render(:partial => "cart", :object => @cart) %>

As far as I know, that statement causes a variable to be created called
'cart' that is available to the partial, and whose value is @cart.  In
addition, the file that contains the partial must be named
_cart.html.erb.

In the partial file _cart.html.erb, you can then do something like this:

  <div><%= number_to_currency(cart.total_price) %></div>

However, I made a mistake, and I wrote @cart instead of cart:

  <div><%= number_to_currency(@cart.total_price) %></div>

and rails didn't complain.  So, which variable name should you use?  To
me it seems much clearer to use @cart.  It highlights the links between
the various files and makes it easier to know where the cart/@cart value
came from.
Robert W. (Guest)
on 2009-05-04 19:32
7stud -- wrote:
> and rails didn't complain.  So, which variable name should you use?  To
> me it seems much clearer to use @cart.  It highlights the links between
> the various files and makes it easier to know where the cart/@cart value
> came from.
From my understanding the instance variable assigned in the controller
already available to the partials.

>  <div><%= number_to_currency(@cart.total_price) %></div>
So doing this is accessing the instance variable @cart and not the local
variable cart.

>  <%= render(:partial => "cart", :object => @cart) %>
The way I understand this syntax is that the value of @cart will be made
available in the partial as a local variable cart.

Imaging you had this instead:
<%= render(:partial => "cart", :object => @some_cart) %>

In this case the local variable for the partial would still be cart.
Taken from :partial => "cart" and from :object => @some_cart. However,
@some_cart would still be accessible from inside the partial because the
partials can see all the instance variable assigned in the controller.
Robert W. (Guest)
on 2009-05-04 19:34
Robert W. wrote:
> In this case the local variable for the partial would still be cart.
> Taken from :partial => "cart" and from :object => @some_cart. However,
> @some_cart would still be accessible from inside the partial because the
> partials can see all the instance variable assigned in the controller.

Correction: and NOT from :object => ...
This topic is locked and can not be replied to.