2009-06-28 1 views
1

일부보기의 일부 레일스 코드를 작성 중이며 누군가가 이미 로그인 한 경우에만 주석 필드를 표시하기를 원합니다. 여기에 사이트. 페이지가 아직 사이트의 구성원이 아닌 사람이 볼 경우레일에서보기의 html 요소에 클래스 속성을 추가하는 가장 깨끗한 방법은 무엇입니까

shared/comment_not_logged_in 조각이 전달되어야한다. 그러나

, 나는 완전히 내가 실행할 수 없습니다 이유에 난처한 해요 콘솔 디버거도

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

같은 관용구는, "missing_your_voice" if not current_user IRB의 문자열을 반환하고 : 페이지가 여기에 바깥 쪽 div 요소에 class 속성 "missing_your_voice"를 추가하는 경우는 같은 검사가 결정합니다.

내가 뭘 잘못하고 있니?

+0

(슬랩 자신의 이마) D' oh! 이렇게 분명합니다! –

답변

2

=을 잊어 버렸습니다. 당신이 얻을 수 있도록, <%=에 의해 <% 교체 :

<%= "missing_your_voice" if not current_user %> 

<% ... %>는 루비 코드를 실행 기억하지만, 아무것도 표시되지. <%= ... %>을 사용하면 코드를 실행하고 표현식의 결과를 표시합니다.

0

molf가 이미 지적했듯이,보기에는 누락 된 것이 있습니다.
<%=이어야합니다.

이외의 컨트롤러에서 helper_method을 호출하여 컨트롤러 방법을 사용 가능하게 설정해야합니다.

필요한 경우 설명서를 살펴보십시오.