我想了解凤凰城不同的render
函数之间的区别。具体来说,我注意到Phoenix View和Phoenix模板中有几个不同的render
函数。菲尼克斯渲染函数的区别
例如,凤凰控制器内,经常可以看到这样的事情:
# 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
在这个视图(即用户视图)相关的index.html
模板,你可以看到这样的事情:
# index.html
<ul>
<%= for user <- @users do %>
<li><%= render "user.html", user: user %></li>
<% end %>
</ul>
# user.html
<p><%= @user.name %></p>
我的理解是,index.html
模板中的render
函数编译为UserView
内部的render
函数。另外,在iex
挖掘后,似乎UserController
的索引操作中的render
函数来自Phoenix.Controller.render/3
。
不过,我注意到默认app.html.eex
模板文件里,有一个渲染功能,看起来像这样:
<%= render @view_module, @view_template, assign %>
这似乎并不匹配以前的签名渲染功能。任何人都可以帮助解释渲染的来源以及它的工作原理吗?