如何在form.html.eex中提供@current_user?

时间:2016-05-03 08:29:48

标签: elixir phoenix-framework

我想在 web / templates / user / form.html.eex 中添加逻辑,这些逻辑将在user#newuser#edit呈现,具体取决于{{1} }。但是,如果我执行以下代码,则会出现@current_user错误。

assign @current_user not available in eex template

如何在<%= if @current_user do %> <h1>Example</h1> <% end %> 中提供@current_user

2 个答案:

答案 0 :(得分:3)

假设您使用以下内容呈现form.html.eex

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

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

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

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

你可以通过以下方式传递所有内容:

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

但是你应该谨慎行事,记住明确比隐含更好。

答案 1 :(得分:0)

如果您一直无法通过current_user,则可以将条件更改为

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

否则,请使用@Gazler的答案。两者都很好。