2009-06-28 5 views
1

J'écris un code Rails pour une vue partielle, et je veux qu'il ne montrer un champ de commentaire si quelqu'un est déjà connecté sur un site ici.Quelle est la plus propre façon d'ajouter un attribut de classe à un élément HTML dans une vue en rails

Si la page est affichée par une personne qui ne fait pas partie du site encore, le fragment shared/comment_not_logged_in doit être passé.

Cependant, je suis totalement perplexe quant à pourquoi je ne peux pas courir le même vérification de décider si la page doit ajouter l'attribut de classe « missing_your_voice » au englobante élément div ici:

<li class="user_submission_form bubble comment_form <% "missing_your_voice" if not current_user %>"> 

     <% if current_user %>  
     <%= image_tag(current_user.avatar(:comment), :class => "profile_pic") %> 
     <% form_for [parent, Comment.new] do |f| %> 
     <%= render "comments/form", :f => f %> 
     <% end %> 
     <% else %> 
     <%= render :partial => 'shared/comment_not_logged_in' %> 
     <% end %> 

    </li> 

le même idiome, "missing_your_voice" if not current_user retourne la chaîne dans RIR, et aussi dans le débogueur de la console.

Qu'est-ce que je fais mal ici?

+0

(Slaps propre front) D'oh! Si évident! –

Répondre

2

Vous avez oublié un =. Remplacer par <%<%=, de sorte que vous obtenez:

<%= "missing_your_voice" if not current_user %> 

Rappelez-vous que <% ... %> ne fonctionnera que le code Ruby, mais pas afficher quoi que ce soit. L'utilisation de <%= ... %> exécutera le code et affichera le résultat de l'expression.

0

Comme Molf déjà fait remarquer, il y a un manque = votre point de vue. Il doit s'agir de <%=.

Autre que cela, assurez-vous de faire votre méthode de commande disponible à votre point de vue en appelant helper_method dans votre contrôleur.

Jetez un oeil sur la documentation si nécessaire.

Questions connexes