2014-03-14 7 views
1

나는 청원 사이트를 가지고 있습니다. 투표 시스템을 구축했지만 기쁜 일이 없습니다. 사용자가 현재 게시물에 대한 투표를하지 않는 경우레일. 투표 테이블에서 통계 열을 얻는 방법 user_id = 현재 사용자

<% if @post.votes.where(user_id: current_user.id).blank? %> 

그것은 true를 반환 것 : 내가보기에이 조건을 사용하여 사용자 당 하나의 투표를 만듭니다.

하지만 난이 코드와 사용자 투표 문을 표시 할 때

<% if @post.votes(user_id: current_user.id) == 1 %> 
     "u voted LIKE" 
     <% else %> 
     "u voted DISLIKE" 
     <% end %> 

그것은 나에게 오류 반환 : 죄송합니다,하지만 뭔가 내가 개발에있어 잘못된 (500) 갔다 방법. 감사.

+0

도, 당신의 레일 설치에 문제가 있어야합니다. 일반적으로 개발 모드에서는 일반 500 오류 메시지가 표시되지 않지만 콜백 및 기타 많은 정보가 포함 된 실제 Ruby 예외가 발생합니다. –

답변

1

명세서에 wherecount이 누락되었습니다.

이 시도

,

<% if @post.votes.where(user_id: current_user.id).count.eql?(1) %> 
    "u voted LIKE" 
<% else %> 
    "u voted DISLIKE" 
<% end %> 
1

업데이트는 1 그는이 투표 한 경우에 당신은 1로 사용자의 게시물에 대한 투표를 계산하는

<% if @post.votes(user_id: current_user.id).count == 1 %> 
     "u voted" 
     <% else %> 
     "u dont voted" 
     <% end %> 

로 상태. 그렇지 않으면 투표하지 않았다.