如何使 @current_user 在 form.html.eex 中可用?

win*_*yer 5 elixir phoenix-framework

我想将逻辑添加到web/templates/user/form.html.eex中,该逻辑user#new在. 但如果我执行以下代码,则会出现错误。user#edit@current_userassign @current_user not available in eex template

<%= if @current_user do %>
  <h1>Example</h1>
<% end %>
Run Code Online (Sandbox Code Playgroud)

我怎样才能@current_user在 中提供form.html.eex

Gaz*_*ler 4

假设您正在form.html.eex使用以下内容进行渲染:

render("form.html.eex", changeset: @changeset, conn: @conn)
Run Code Online (Sandbox Code Playgroud)

并且您正在渲染“父”模板并@current_user在分配中可用。

您可以在模板中传入@current_user该函数:render

render("form.html.eex", changeset: @changeset, conn: @conn, current_user: @current_user)
Run Code Online (Sandbox Code Playgroud)

您可以通过以下方式传递分配中的所有内容:

render("form.html.eex", @conn.assigns)
Run Code Online (Sandbox Code Playgroud)

但是,您应该谨慎执行此操作,记住显式优于隐式。