【问题标题】:How can I make @current_user available in form.html.eex?如何使 @current_user 在 form.html.eex 中可用?
【发布时间】:2019-06-23 20:58:01
【问题描述】:

我想将逻辑添加到 web/templates/user/form.html.eex 中,根据@current_user 呈现在user#newuser#edit 中。但如果我执行以下代码,我会收到 assign @current_user not available in eex template 错误。

<%= if @current_user do %>
  <h1>Example</h1>
<% end %>

如何使@current_userform.html.eex 中可用?

【问题讨论】:

  • 您可以在视图中定义current_user 函数并在form.html.exx 中使用current_user(@conn)
  • 你在哪里以及如何渲染form.html.eex
  • user#new 和 user#edit

标签: elixir phoenix-framework


【解决方案1】:

假设你正在使用类似的东西渲染form.html.eex

render("form.html.eex", changeset: @changeset, conn: @conn)

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

您可以在模板中的render 函数中传递@current_user

render("form.html.eex", changeset: @changeset, conn: @conn, current_user: @current_user)

你可以在 assigns 中传递所有内容:

render("form.html.eex", @conn.assigns)

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

【讨论】:

    【解决方案2】:

    如果你不能一直通过current_user,你可以把条件改成,

     <%= if assigns[:current_user] do %>
       <h1>Example</h1>
     <% end %>
    

    否则,请使用@Gazler 的答案。两者都可以正常工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-26
      • 1970-01-01
      • 1970-01-01
      • 2011-10-11
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多