Как мне выполнить голосование, используя гем Rails 3 'thumbs_up'? - PullRequest
3 голосов
/ 28 февраля 2011

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

Я настроил гем и запустил грабли db: migrate, и все уладилось.

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

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

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

$("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");
        }
    });
};

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

1 Ответ

3 голосов
/ 28 февраля 2011

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

Обращаясь к настройке здесь: Разъяснение о том, как использовать камень голосования "thumbs_up" с Rails 3

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

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

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

...