0

我正在使用 Rails 中的 thumbs_up gem 来创建投票系统。在我的一个控制器中,我有一个名为Superlativethat的模型acts_as_voteable,并且我试图用至少一票过滤掉对象。

根据文档和在线资源,这应该有效:

def most_votes
  @most_votes = Superlative.tally(
    { :at_least => 1,
    :limit => 10,
    :order => 'vote_count desc'
  })
end

但是我得到了最高级模型中的所有记录,即使是 0 票的记录。此外,排序似乎也不起作用。不管我是放desc还是asc订购总是desc

我到处搜索,但似乎没有人有同样的问题。

以下是一些相关的应用程序详细信息:

Using thumbs_up (0.6.5)
Using rails (3.2.13) 
ruby 1.9.3p429

更新:附加信息 我尝试在控制台中运行上述控制器代码(仅用于该操作),并且再次返回所有记录,包括那些票数为 0 的记录。

另外,查看下面的代码:

- provide(:title, "Best Superlatives")
#superlatives
  %h1.title Superlatives (Most Votes)
  %table.table.table-hover
    %thead
      %tr
        %th Name
        %th Most Likely ...
        %th Votes
        %th Vote!
    %tbody
      = render @most_votes
%br/
4

1 回答 1

0

如果这不起作用,则可能是您在将变量 @most_votes 绘制在视图上之前的某个时间点覆盖了它的内容。

尝试通过运行进入 Rails 控制台

bundle exec script/rails console

进入控制台后,尝试运行:

@most_votes = Superlative.tally(
  { :at_least => 1,
    :limit => 10,
    :order => 'vote_count desc'
  }) 

现在检查@most_votes 的内容,您应该看到至少有 1 票的投票,并且顺序正确,我很确定 gems 在这些查询上工作正常,因为我从来没有遇到过任何问题,并且它被使用许多开发人员在生产环境中使用。

如果在这样做之后您确认 gem 工作正常,请尝试使用完整的控制器代码和完整的视图代码更新您的问题,以便我们帮助调试问题。

于 2013-09-13T23:46:08.800 回答