4

したがって、jQuery/AJAX と画像を使用して投票をトリガーしたいと考えています。つまり、親指を立てたアイコンと親指を下げたアイコンがあります。

gem をセットアップし、rake db:migrate を実行して、すべてを整理しました。

しかし、アプリで投票を実行する方法がわかりません。

私のモデルでは、私のモデルである に 1 つのモデルを使用しacts_as_voterていClientます。acts_as_votable私のモデルであるUploadモデル。したがって、クライアントはアップロードに賛成票または反対票を投じます。カルマも何もないので、それは文字通り親指アップであり、それ自体は「投票」ではありません。これは、アップロードごとの各クライアントからの単純な賛成/反対です。

私の見解では、これが私が投票を実行したい方法です:

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

upvoteこの Rails 3 gem を使用して実際にアクションを実装するにはどうすればよいですか?

編集:関数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");
        }
    });
};

ただし、この宝石を正しく機能させるには、これを変更する必要がある可能性が高いことを十分に認識しています。これは、この gem でできることを実行しようとした私のバージョンにすぎません (ただし、この gem からの実装が望ましいと思います)。

4

1 に答える 1

3

これは、この特定の gem に関する問題というよりは、一般的に Rails で Ajax アクションを構築する方法の問題です。

ここでセットアップを参照する: Rails 3 で「thumbs_up」投票ジェムを使用する方法の説明

次のようなものを使用して、jQuery でこれを設定できます。

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

うまくいけば、それはあなたを近づけます。

于 2011-02-28T07:59:28.263 に答える