Как выполнить голосование с помощью драгоценного камня Rails 3 'thumbs_up'?

Поэтому я хочу, чтобы голоса запускались с использованием jQuery/AJAX и изображения. т. е. у меня есть значок «большой палец вверх» и «палец вниз».

Я настроил драгоценный камень, запустил rake db:migrate и все уладил.

Но я не уверен, как выполнить голосование в моем приложении.

В моей модели я использую одну модель для acts_as_voter, которая является моей моделью Client. Модель, которую acts_as_votable, это моя Upload модель. Таким образом, клиент голосует за/против загрузки. Это буквально палец вверх, а не столько «голосование» как таковое, потому что нет никакой кармы или чего-то еще. Это просто палец вверх/вниз от каждого клиента за загрузку.

На мой взгляд, вот как я хотел бы провести голосование:

$("div#upvote img").live("click", compv.comments.upvote);

Как я могу использовать это на самом деле для реализации действия upvote с помощью этого драгоценного камня Rails 3?

Редактировать: если вам интересно посмотреть, что делает функция compv.comments.upvote в ее текущей форме, вы можете увидеть это здесь:

    compv.comments.upvote = function(event){
    var uploaderID = compv.comments.getUploadID(event.target);
    $.ajax({
        url: '/uploads/'+uploaderID+'/upvote.js',
        success: function(data, status, xhr){
            var uploadElement = $("li[data-upload-id="+uploaderID+"]");
            uploadElement.attr('data-upload-upvote', parseInt(uploadElement.attr('data-upload-upvote'))+1);
            var imgElement = uploadElement.find("div.image-wrapper > img");
            var img_opacity = imgElement.css('opacity');
            if(img_opacity < 1 ) {  
                imgElement.fadeTo(600, 1, function() {
            }); 
            }
            imgElement.removeClass("downvoted");
            imgElement.addClass("upvoted");
        }
    });
};

Тем не менее, я прекрасно понимаю, что это, скорее всего, придется изменить, если я хочу, чтобы этот драгоценный камень работал правильно. Это была просто моя версия попытки сделать то, что может сделать этот гем (хотя я бы предпочел реализацию из этого гем).


person marcamillion    schedule 28.02.2011    source источник


Ответы (1)


Это больше вопрос о том, как создавать действия Ajax в Rails в целом, чем что-либо, связанное с этим конкретным драгоценным камнем.

Ссылаясь на настройку здесь: Пояснение по как использовать гем для голосования thumbs_up с Rails 3

Вы можете настроить это в jQuery с помощью чего-то вроде:

$.post('/posts/' + id + '/vote_up', function() {
  alert('success');
})
.error(function() { alert('Vote error.'); });

Надеюсь, это сблизит вас.

person bouchard    schedule 28.02.2011
comment
То есть с /posts/ это контроллер, а /vote_up это действие правильно? - person marcamillion; 28.02.2011
comment
Так должен ли я не делать Votes Controller, а просто добавить действия vote_up и vote_down в контроллер, на которые будут воздействовать голоса? - person marcamillion; 28.02.2011
comment
Да, это, безусловно, один из способов сделать это. ИМО, если у вас есть голоса по разным моделям, сделайте уникальный контроллер голосов. В противном случае просто используйте voice_up/down в качестве действий на этом контроллере. - person bouchard; 28.02.2011
comment
Спасибо. Я думаю, что это добавляет ясности - наряду с другим ответом. - person marcamillion; 28.02.2011
comment
Привет, это работает для меня, но я не уверен, как обновить вид, чтобы отразить изменения. - person afxjzs; 31.10.2012