je me suis déplacé du code à app.html.eex de poste/index.html.eexcode après passage de index.html.eex à app.html.eex: attribuer @user pas disponible dans le modèle 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 %>
Lorsqu'un utilisateur tente de se connecter, il soulève:
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]
Voici une partie du code du contrôleur utilisateur:
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
Je ne sais pas comment référencer spécifiquement app.html.eex du contrôleur.
J'ai regardé des questions similaires, mais n'a pas pu trouver une réponse:
assign @changeset not available in eex template
Je dois ajouter cessionnaires après "signin.html.eex", suivant le modèle conn, template, assigns
.
def signin(conn, _params) do
render(conn, "signin.html")
end
Merci, cela fonctionne. Clarifier; Le bloc de code vérifie si l'utilisateur est connecté. Si c'est le cas, il affiche un message de bienvenue et un bouton de déconnexion dans la barre de navigation. S'il n'y a pas d'ouverture de session, il ne propose que la connexion et l'inscription. – RubyRube