我想在 web / templates / user / form.html.eex 中添加逻辑,这些逻辑将在user#new
和user#edit
呈现,具体取决于{{1} }。但是,如果我执行以下代码,则会出现@current_user
错误。
assign @current_user not available in eex template
如何在<%= if @current_user do %>
<h1>Example</h1>
<% end %>
中提供@current_user
?
答案 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的答案。两者都很好。