按投票数量订购帖子

时间:2011-06-13 11:08:40

标签: ruby ruby-on-rails-3 voting

大家好长时间读者,第一次海报:)

我有一个带帖子的应用程序,我使用gem thumbs_up(rails v.3.0.7)为帖子添加投票。我已经为显示前10个帖子的帖子实现了一面名声,而我无法弄清楚如何通过投票(加上minus方法)对帖子进行排序。

现在我只是使用:

def wall_of_fame
@posts = Post.tally(
  {   :at_least => 1,
      :at_most => 10000,
      :limit => 10,
      :order => 'vote_count desc'
  })

和耻辱之墙:

def wall_of_fame
@posts = Post.tally(
  {   :at_least => 1,
      :at_most => 10000,
      :limit => 10,
      :order => 'vote_count asc'
  })

但实际上我需要使用 plusminus 方法订购帖子,而不仅仅是 vote_count ,因为它只显示了一些帖子,而不是那些投票最多的帖子,或者至少是这样的:

:order => 'votes_for asc'

和wall_of_shame

:order => 'votes_against asc'

目前,votes_for和votes_against只能在像

这样的视图中使用
@post.votes_for

如何在我的帖子控制器中使用它们才能在:order => 中使用它们?

谢谢。

2 个答案:

答案 0 :(得分:2)

我也遇到过这个问题,但是我从头开始构建我的投票机制。我最终在视图中对帖子进行了排序。所以,我这样评价他们:

<%= render @posts.sort_by { |post| post.votes.size }.reverse %>

这使我的帖子从最多票数到最少票数。

祝你好运!

@thatdankent

答案 1 :(得分:1)

您只需要订购plusminus:

http://gistpages.com/2013/08/28/order_by_votes_using_the_thumbs_up_gem

Design.plusminus_tally.order('plusminus_tally DESC')