# Partials: what variable name should you use?

**URL:** <https://www.ruby-forum.com/t/partials-what-variable-name-should-you-use/167141>\
**Category:** Rails\
**Created:** [May 4, 2009, 5:11pm UTC](https://www.ruby-forum.com/t/partials-what-variable-name-should-you-use/167141 "2009-05-04T17:11:53Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![7stud](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/7/57b2e6/32.png) [@7stud](https://www.ruby-forum.com/u/7stud)\
**Post date:** [May 4, 2009, 5:11pm UTC](https://www.ruby-forum.com/t/partials-what-variable-name-should-you-use/167141/1 "2009-05-04T17:11:53Z")

</div>

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:

\<%= number\_to\_currency(cart.total\_price) %\>

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

\<%= number\_to\_currency(@cart.total\_price) %\>

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.

---

<div class="post-metadata">

**Author:** ![7stud](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/7/57b2e6/32.png) [@7stud](https://www.ruby-forum.com/u/7stud)\
**Post date:** [May 4, 2009, 5:32pm UTC](https://www.ruby-forum.com/t/partials-what-variable-name-should-you-use/167141/2 "2009-05-04T17:32:25Z")

</div>

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.

> \<%= number\_to\_currency(@cart.total\_price) %\>

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.

---

<div class="post-metadata">

**Author:** ![7stud](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/7/57b2e6/32.png) [@7stud](https://www.ruby-forum.com/u/7stud)\
**Post date:** [May 4, 2009, 5:34pm UTC](https://www.ruby-forum.com/t/partials-what-variable-name-should-you-use/167141/3 "2009-05-04T17:34:15Z")

</div>

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 =\> …
