"Like", "Dislike" plugin for rails
Is there any "like" , "dislike" plugin for rail开发者_JAVA技巧s...
I went through rating plugins... but all of them were 5 star rating plugins...
I recommend creating the like
and dislike
option by taking on the classic vote model functionality.
So you have Vote
as a join table between the User
and the Votable Item
.
A Vote value can work as Vote.value + 1 = Like, Vote.value -1 = Dislike, Vote.value = Neutral/Didn't vote.
Your controller for your votable item can look like this :
def like
get_vote
@vote.value += 1 unless @vote.value == 1
@vote.save
respond_to do |format|
format.html
format.js
end
end
def dislike
get_vote
@vote.value -= 1 unless @vote.value == -1
@vote.save
respond_to do |format|
format.html
format.js
end
end
private
def get_vote
current_item = @item.detect{|r| r.id == params[:id].to_i}
@vote = current_item.votes.find_by_user_id(current_user.id)
unless @vote
@vote = Vote.create(:user_id => current_user.id, :value => 0)
current_item.votes << @vote
end
end
And for everyone's info, this question didn't deserve to be voted down. Its completely valid.
I know an answer has already been accepted but I've just found a gem called act_as_votable that might fit your needs:
Acts As Votable is a Ruby Gem specifically written for Rails/ActiveRecord models. The main goals of this gem are:
- Allow any model to be voted on, like/dislike, upvote/downvote, etc.
- Allow any model to vote. In other words, votes do not have to come from a user, they can come from any model (such as a Group or Team).
- Provide an easy to write/read syntax.
Try Recommendable:
https://github.com/davidcelis/recommendable
I see nothing wrong with the question.
Up down voting is still rating. Just using only two stars. :) I seem to remember acts_as_rateable allowing number of star definition.
Why don't just create a new boolean field named like
? and then update it as false
for dislike and true
for like. I doubt you find a plugin/gem for this functionality.
精彩评论