Задать вопрос
@maxprof
Студент

Как узнать голосовал ли пользователь Rails (гем acts_votable)?

Здравствуйте, есть такое условие:
- if user_signed_in?
    - if current_user.voted_for? answer and answer.liked_by current_user
      = link_to unlike_answer_path(answer), class: "unlike", remote: true, method: :put do
        button.btn.btn-info aria-label=("Left Align") type="button"
          span.glyphicon.glyphicon-thumbs-down.glyphicon-align-center aria-hidden="true"
          span.badge  id="badge_downvote_value" = answer.get_downvotes.size
    - elsif current_user.voted_for? answer and answer.disliked_by current_user
      = link_to like_answer_path(answer),  class: "like", remote: true,  method: :put do
        button.btn.btn-info aria-label=("Left Align") type="button"
          span.glyphicon.glyphicon-thumbs-up.glyphicon-align-center aria-hidden="true"
          span.badge id="badge_upvote_value" = answer.get_upvotes.size

Сначала я проверяю или вошел пользователь, а потом если он проголосовал и лайкнул ответ - прячу кнопку like и отображаю кнопку dislike, иначе наоборот - прячу кнопку dislike и отображаю кнопку для like. НО по не понятным мне причинам постоянно отображается только кнопка dislike. причем она не работает. То есть при попытке поставить dislike ничего не происходит.. Если условия убрать и оставить просто 2 кнопки, то все работает нормально.
  • Вопрос задан
  • 113 просмотров
Подписаться 1 Оценить 2 комментария
Решения вопроса 1
Во второй строке
- if current_user.voted_for? answer and answer.liked_by current_user
вы делает одно и тоже - проверяете проголосовал ли пользователь

Надо вот так
- if current_user.voted_up_on? @answer
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы