Elixir 在父对象中呈现子对象的索引模板';s显示模板
我有一个Elixir 在父对象中呈现子对象的索引模板';s显示模板,elixir,phoenix-framework,Elixir,Phoenix Framework,我有一个用户和一封电子邮件脚手架(一个用户有许多电子邮件)。如果用户有电子邮件,我想在用户显示中显示电子邮件索引模板。代码如下: web/controllers/user\u controller.ex [...] def show(conn, %{"id" => id}) do user = Repo.get!(User, id) |> Repo.preload([:emails]) conn |> assign(:user, user) |> ren
用户
和一封电子邮件
脚手架(一个用户
有许多电子邮件
)。如果用户有电子邮件,我想在用户
显示
中显示电子邮件
索引
模板。代码如下:
web/controllers/user\u controller.ex
[...]
def show(conn, %{"id" => id}) do
user = Repo.get!(User, id) |> Repo.preload([:emails])
conn
|> assign(:user, user)
|> render("show.html")
end
[...]
[...]
<%= unless Enum.empty?(@user.emails) do %>
<%= render MyApp.EmailView, "index.html", emails: @user.emails %>
<% end %>
[...]
web/templates/user/show.html.eex
[...]
def show(conn, %{"id" => id}) do
user = Repo.get!(User, id) |> Repo.preload([:emails])
conn
|> assign(:user, user)
|> render("show.html")
end
[...]
[...]
<%= unless Enum.empty?(@user.emails) do %>
<%= render MyApp.EmailView, "index.html", emails: @user.emails %>
<% end %>
[...]
[…]
[...]
我得到一个assign@conn在eex模板中不可用。
错误。如何实现这一点?您可能在EmailView
的index.html
模板中使用@conn
,但是渲染
不会自动将@conn
从当前模板发送到它要渲染的模板,因此您需要执行以下操作:
<%= render MyApp.EmailView, "index.html", conn: @conn, emails: @user.emails %>