Может ли кто-нибудь объяснить мне, как переменная из контроллера волшебным образом появляется в представлении как атрибут модуля?
Например, это render/3
в Контроллере:
defmodule MyApp.UserController do
def show(conn, %{"id" => user_id}) do
render conn, "show.html", user: Repo.get(User, user_id)
end
создает атрибут @user
, который я могу использовать в шаблоне, например:
Hello, <%= @user.first_name %>
Я так понимаю, что шаблон стал функцией и находится в представлении, как MyApp.UserView
. Это означает, что @user
является атрибутом модуля MyApp.UserView
. Но как?