我想了解鳳凰城不同的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 %>
這似乎並不匹配以前的簽名渲染功能。任何人都可以幫助解釋渲染的來源以及它的工作原理嗎?