【问题标题】:thumbs_up Rails gem's "at_least" and "order" methods not doing anythingthumbs_up Rails gem 的“at_least”和“order”方法没有做任何事情
【发布时间】:2013-09-13 22:43:19
【问题描述】:

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

基于documentation and online resources,这应该可以工作:

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/

【问题讨论】:

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


    【解决方案1】:

    如果这不起作用,则可能是您在将变量 @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 工作正常,请尝试使用完整的控制器代码和完整的视图代码更新您的问题,以便我们帮助调试问题。

    【讨论】:

    • 刚刚添加了附加信息——即使在控制台中,所有记录都被返回,所以我认为这不是视图问题。有什么想法吗?
    • 你能在github上发布一个示例项目/代码并给我网址吗?所以我可以克隆它,重现它并能够调试,除了实际能够运行代码和调试它之外,我找不到其他方法来帮助你。它应该是一个简单的调试面团。
    • git@github.com:philipliou/nehsalumni.git
    猜你喜欢
    • 1970-01-01
    • 2017-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-28
    • 2012-09-07
    • 2016-10-02
    相关资源
    最近更新 更多