si, elsif, else html erb débutant
Je vais avoir des problèmes avec un if, else, le reste de tresorerie en html.erb. J'ai vu beaucoup de questions autour de l'if/else dans erb, mais aucun qui comprennent elsif j'ai donc pensé que je voudrais vous demander de l'aide.
Voici mon code html.erb:
<% if logged_in? %>
<ul class = "nav navbar-nav pull-right">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
Account <b class="caret"></b>
</a>
<ul class="dropdown-menu pull-right">
<li><%= link_to "Profile", current_user %></li>
<li><%= link_to "Settings", edit_user_path(current_user) %></li>
<li class="divider"></li>
<li>
<%= link_to "Log out", logout_path, method: "delete" %>
</li>
</ul>
</li>
</ul>
<% elsif has_booth?(current_user.id) %>
<ul>
<li>TEST</li>
</ul>
<% else %>
<ul class="nav navbar-nav pull-right">
<li><%= link_to "Sign Up", signup_path %></li>
<li><%= link_to "Log in", login_path %></li>
</ul>
<% end %>
Voici mon has_booths méthode:
module BoothsHelper
def has_booth?(user_id)
Booth.exists?(user_id: user_id)
end
end
Je voudrais l'en-tête nav trois différents types de contenus pour les différents utilisateurs. L'utilisateur connecté, l'utilisateur connecté qui a créé un stand, et de la session de l'utilisateur. Jusqu'à présent, je ne peux que semblent faire les 2 à la de trois le travail. J'ai essayé de changer
<% elsif has_booth?(current_user.id) %>
à
<% elsif logged_in? && has_booth?(current_user.id) %>
et qui n'a pas fonctionné non plus. Suis-je écrire ma déclaration correctement? Toutes les pensées apprécié. Merci.
Vous devez vous connecter pour publier un commentaire.
Le problème, c'est que votre première condition est vraie, donc ça s'arrête là. Votre première condition:
Même si elles n'ont pas un stand il n'atteindra jamais le elsif parce que la première condition est vraie. Vous devez soit:
Ou il peut être un nettoyant approche à les séparer en deux si/d'autre:
Une meilleure approche serait d'aplatir la déclaration, la manipulation de la pas connecté dans la condition première de sorte que vous n'avez pas à le tester avec si ils ont un stand:
Vous pourriez également avoir utilisé
unless logged_in?
, mais l'autre personne, et elsif ne pas faire comme beaucoup de sens, du point de vue sémantique, avec moins et, par conséquent, il ne lit pas aussi clairement.