partials: what variable name should you use?

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.

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.

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 Walker 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 => ...