Ich versuche, den Unterschied zwischen den verschiedenen render
Funktionen in Phoenix zu verstehen. Insbesondere bemerke ich, dass es verschiedene render
Funktionen in einer Phoenix-Ansicht und einer Phoenix-Vorlage gibt.Unterschied zwischen Render-Funktionen in Phoenix
Zum Beispiel in einem Phoenix-Controller, ist es üblich, so etwas zu sehen:
# assume this is UserController
def index(conn, _params) do
users = Repo.all(Users) # let's assume that this gives you all your users
render conn, "index.html", users: users
end
In index.html
Vorlage mit dieser Ansicht verknüpft ist (dh Userview), können Sie so etwas wie dies sehen:
# index.html
<ul>
<%= for user <- @users do %>
<li><%= render "user.html", user: user %></li>
<% end %>
</ul>
# user.html
<p><%= @user.name %></p>
Mein Verständnis ist, dass die render
Funktion innerhalb der index.html
Vorlage zu einer render
Funktion innerhalb der UserView
kompiliert wird. Auch nach dem Umgraben in iex
scheint es, als ob die render
Funktion in der UserController
Indexaktion von Phoenix.Controller.render/3
kommt.
aber ich merke, dass der Standard innerhalb von app.html.eex
Vorlagendatei, gibt es eine Funktion machen, die wie folgt aussieht:
<%= render @view_module, @view_template, assign %>
Dies scheint nicht die Unterschriften der vorherigen übereinstimmen Funktionen machen . Kann mir jemand erklären, woher dieser Render stammt und wie er funktioniert?