【发布时间】:2010-09-13 18:14:40
【问题描述】:
是否有任何“喜欢”、“不喜欢”的 Rails 插件...
我浏览了评级插件...但它们都是 5 星评级插件...
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-plugins
是否有任何“喜欢”、“不喜欢”的 Rails 插件...
我浏览了评级插件...但它们都是 5 星评级插件...
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-plugins
我建议通过采用经典投票模型功能来创建 like 和 dislike 选项。
所以你有 Vote 作为 User 和 Votable Item 之间的连接表。
投票值可以作为 Vote.value + 1 = 喜欢,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
对于每个人的信息,这个问题不应该被否决。它完全有效。
【讨论】:
我知道一个答案已被接受,但我刚刚找到了一个名为 act_as_votable 的 gem,它可能满足您的需求:
Acts As Votable 是专门为 Rails/ActiveRecord 模型编写的 Ruby Gem。这个 gem 的主要目标是:
- 允许对任何模型进行投票、喜欢/不喜欢、赞成/反对等。
- 允许任何模型投票。换句话说,投票不一定来自用户,它们可以来自任何模型(例如组或团队)。
- 提供易于编写/阅读的语法。
【讨论】:
【讨论】:
我认为这个问题没有任何问题。
上下投票仍然是评级。只用了两颗星。 :) 我似乎记得acts_as_rateable 允许定义星数。
【讨论】:
为什么不直接创建一个名为like 的新布尔字段?然后将其更新为 false 表示 dislike 和 true 表示 like。我怀疑你找到了这个功能的插件/gem。
【讨论】: