ivar - це скорочення від
instance variable (змінна екземпляра).
У Ruby вона записується з
@ перед назвою, наприклад:
@user = User.find(params[:id])
Як це працює?
У Ruby кожен об’єкт має свій набір змінних екземпляра. Тобто @user у контролері і @user у представленні (view) - це одна і та ж змінна в межах одного запиту, але вона належить конкретному екземпляру контролера.
Rails автоматично робить усі @-змінні з контролера доступними у відповідному шаблоні.
контролер:
# app/controllers/users_controller.rb
def show
@user = User.find(params[:id])
end
та сама в'юха:
<!-- app/views/users/show.html.erb -->
<h1><%= @user.name %></h1>
Якщо коротко:
- @ivar = instance variable = змінна екземпляра об’єкта
- Видимість в межах одного екземпляра
- Rails автоматично передає @-змінні з контролера у view
- Використовується для передачі даних між шарами MVC