1
我有些感动代码后/ index.html.eex从index.html.eex移动代码app.html.eex后:分配@user不具备的EEX模板
<%= if @user do %>
<ul class="nav navbar-nav navbar-right">
<li>Hello <%= @user.username %>!</li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li> <%= link "logout", to: session_path(@conn, :logout), method: :delete, class: "logout-button" %></li>
</ul>
</ul>
<% else %>
<ul class="nav navbar-nav navbar-right">
<li ><a class="login" href="https://stackoverflow.com/users/signin">Login</a></li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li><a class="signup" href="https://stackoverflow.com/users/new">Signup</a></li>
</ul>
<% end %>
到app.html.eex
当用户试图登录,它提出:
assign @user not available in eex template.
Please make sure all proper assigns have been set. If this
is a child template, ensure assigns are given explicitly by
the parent template as they are not automatically forwarded.
Available assigns: [:conn, :view_module, :view_template]
下面是从用户控制器的代码的一部分:
def index(conn, _params) do
users = Auths.list_users()
render(conn, "index.html", users: users)
end
def new(conn, _params) do
changeset = Auths.change_user(%Citybuilder.Auths.User{})
render(conn, "new.html", changeset: changeset)
end
def create(conn, %{"user" => user_params}) do
case Auths.create_user(user_params) do
{:ok, user} ->
conn
|> put_flash(:info, "Welcome! Happy writing :)")
|> redirect(to: "https://stackoverflow.com/users/signin")
{:error, %Ecto.Changeset{} = changeset} ->
render(conn, "new.html", changeset: changeset)
end
end
def signin(conn, _params) do
render(conn, "signin.html")
end
我不确定如何从控制器专门引用app.html.eex。
我看着类似的问题,但无法找到一个答案:
assign @changeset not available in eex template
我需要“signin.html.eex”后添加受让人,继conn, template, assigns
模式。
def signin(conn, _params) do
render(conn, "signin.html")
end
谢谢,这是有效的。澄清;代码块检查用户是否登录。如果是,它将打印一条欢迎消息,并在导航栏中注销按钮。如果没有登录,它只提供登录和注册。 – RubyRube