ivar - to skrót od
instance variable (zmienna instancji).
W Ruby zapisuje się ją z
@ przed nazwą, na przykład:
@user = User.find(params[:id])
Jak to działa?
W Ruby każdy obiekt ma swój zestaw zmiennych instancji. To znaczy, że @user w kontrolerze i @user w widoku (view) - to ta sama zmienna w ramach jednego żądania, ale ona należy do konkretnej instancji kontrolera.
Rails automatycznie udostępnia wszystkie zmienne @ z kontrolera w odpowiednim szablonie.
kontroler:
# app/controllers/users_controller.rb
def show
@user = User.find(params[:id])
end
i ten sam widok:
<!-- app/views/users/show.html.erb -->
<h1><%= @user.name %></h1>
Krótko mówiąc:
- @ivar = instance variable = zmienna instancji obiektu
- Widoczność w ramach jednej instancji
- Rails automatycznie przekazuje zmienne @ z kontrolera do widoku
- Używane do przekazywania danych między warstwami MVC