铁路的"喜欢","不喜欢"插件

Mad*_*han 16 ruby-on-rails ruby-on-rails-plugins

铁路有任何"喜欢","不喜欢"的插件......

我通过评级插件...但他们都是5星评级插件...

Tri*_*rip 13

我建议通过采用经典投票模型功能来创建likedislike选项.

所以,你必须Vote为之间的连接表UserVotable Item.

Vote值可以作为Vote.value + 1 = Like,Vote.value -1 =不喜欢,Vote.value =中立/没有投票.

您的可投票项目的控制器可能如下所示:

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
Run Code Online (Sandbox Code Playgroud)

对于每个人的信息,这个问题不值得投票.它完全有效.


小智 5

我知道答案已被接受,但我刚刚发现了一个名为act_as_votable的宝石,可能符合您的需求:

Acts As Votable是专门为Rails/ActiveRecord模型编写的Ruby Gem.这个宝石的主要目标是:

  • 允许任何模型投票,如/不喜欢,upvote/downvote等.
  • 允许任何模型投票.换句话说,投票不一定来自用户,他们可以来自任何模型(例如团队或团队).
  • 提供易于编写/读取的语法.