2009-06-28 4 views
1

ein Klassenattribut hinzuzufügen Ich schreibe einige Rails-Code für eine Teilansicht, und ich möchte es nur ein Kommentarfeld anzeigen, wenn jemand bereits bei einem angemeldet ist Website hier.Was ist der sauberste Weg, um ein HTML-Element in einer Ansicht in Schienen

Wenn die Seite von jemandem gesehen wird, die noch nicht Mitglied der Website ist, das shared/comment_not_logged_in Fragment in übergeben werden soll.

Allerdings bin ich völlig ratlos, warum ich das nicht laufen kann gleiche Prüfung entscheiden, ob die Seite sollte das Klassenattribut „missing_your_voice“ zu dem umschließenden div Elemente hinzufügen hier:

<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> 

das gleiche Idiom, "missing_your_voice" if not current_user die Zeichenfolge in irb zurückkehrt, und auch in dem Konsole-Debugger.

Was mache ich hier falsch?

+0

(Slaps eigene Stirn) D'oh! So offensichtlich! –

Antwort

2

Sie haben eine = vergessen. Ersetzen <% durch <%=, so dass Sie bekommen:

<%= "missing_your_voice" if not current_user %> 

Denken Sie daran, dass <% ... %> nur Ruby-Code ausführen, aber nichts an. Unter Verwendung von <%= ... %> wird der Code und das Ergebnis des Ausdrucks anzeigen.

0

Wie molf schon darauf hingewiesen hat, gibt es eine fehlende = auf Ihrer Sicht.
Es sollte <%= sein.

Stellen Sie sicher, dass Ihre Controller-Methode für Ihre Ansicht verfügbar ist, indem Sie in Ihrem Controller helper_method aufrufen.

Sehen Sie sich ggf. die Dokumentation an.

Verwandte Themen