【问题标题】:Order posts by number of votes按票数排序帖子
【发布时间】:2011-06-13 11:08:39
【问题描述】:

大家好,老读者,第一次发帖:)

我有一个带有帖子的应用程序,我正在使用 gem thumbs_up (rails v. 3.0.7) 为帖子添加投票。我已经为显示前 10 个帖子的帖子设置了名人墙,但我只是不知道如何按投票对帖子进行排序(加减法)。

现在我只是在使用:

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'

为了耻辱墙

:order => 'votes_against asc'

目前 votes_for 和 votes_against 只能在像

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

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

谢谢。

【问题讨论】:

  • 好吧,我在帖子表中添加了 votes_plus 和 votes_minus 并进行了 vote_up 操作来为它们添加 +1。因此,如果用户为帖子投票,他也会为帖子表本身添加 +1 投票。这不是最好的方法,但现在可以了;)

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


【解决方案1】:

我也遇到过这个问题,但我是从零开始构建我的投票机制的。我最终在视图中对我的帖子进行了排序。所以,我重新设计了它们:

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

这将我的帖子从最高票数到最低票数排序。

祝你好运!

@thatdankent

【讨论】:

  • 哇,过去一个小时一直在努力解决这个问题,这比我想象的要容易得多。
【解决方案2】:

您只需要订购加减号:

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

Design.plusminus_tally.order('plusminus_tally DESC')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-10
    • 1970-01-01
    • 2018-05-18
    • 1970-01-01
    相关资源
    最近更新 更多