Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community!
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trial

Anders Solvang
Courses Plus Student 719 PointsRuby: Erb tag and when to use @
Hi.
When do you use the @ symbol in the erb tag and when not to?
1 Answer

Philipp Antar
7,216 PointsVariables prefixed with an @ are instance variables. You can use them if have defined the previously. Let's say you have a simple model:
class User < ActiveRecord::Base
attr_accessible :email, :user_name
end
…then your controller may look like this:
class UsersController < ApplicationController
def index
@users = User.all
end
now, in your view you can use this instance variable, e.g.:
We have <%= pluralize (@users.count, "user") %><br>
Here's a list of all our users:
<% @users.each do |user| %>
<%= user.user_name %>
<% end %>
Where these instance variables come from was a huge mistery for me when first trying to understand Rails code. The key is that you define these variables in the controller. I could just as easily have used @all_of_the_users
instead of @users
.
BTW: The last line has user
without the @, because it's a local variable within the block of the .each
method.