2010-11-15 71 views

回答

3

它们设置起来非常简单。这里有一个你可以开始:

class Object < ActiveRecord::Base 
    has_many :votes, :as => :votable 
    has_many :voting_users, 
       :through => :votes, 
       :source => :user 

#object_controller 

    def vote_up 
    get_vote 
    @vote.value += 1 unless @vote.value == 1 
    @vote.save 
    respond_to do |format| 
     format.html {render :action => 'view'} 
     format.js { render :action => 'vote'} 
    end 
    end 

    private 

    def get_vote 
    current_object = Objects.detect{|r| r.id == params[:id].to_i} 
    @object = current_object 
    @vote = current_object.votes.find_by_user_id(current_user.id) 
    unless @vote 
     @vote = Vote.create(:user_id => current_user.id, :value => 0) 
     current_object.votes << @vote 
    end 
    end 
+0

太棒了,感谢您的代码。我们可能会把它放在这个方向。 – marketer 2010-11-17 01:29:58

+0

我是在同一个地方,找不到宝石,所以只写了这个。 – Trip 2010-11-17 19:14:51

1

Make_votable看起来像一个真棒和易于实施的宝石。

1

我使用的是Thumbs Up,它的功能就像一个魅力。这是一个改良的vote_fu Rails 3.