【问题标题】:Autocomplete Vs Pagination自动完成与分页
【发布时间】:2013-12-02 02:14:52
【问题描述】:

我有一个条目数量相对较少的 Rails 模型(目前大约 300 个,可能永远不会超过 1000 个)。

它目前在其索引页面上对项目进行分页,每页显示 20 个结果。

我刚刚将 Twitter Typeahead 添加到搜索字段中,并且我正在使用记录的名称来提供自动完成建议。问题是,当我对结果进行分页时,我只能为当前分页批次中的 20 个项目提供建议。

每个模型我唯一需要的是它的名称,我不想加载/解析每条记录,因为这会抵消分页带来的大部分优势。

那么我怎样才能保留合理的分页,同时又能高效地访问所有记录的名称呢?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 activerecord pagination twitter-typeahead


    【解决方案1】:

    您可以使用pluck 单独获取名称。

    @names = MyModel.pluck(:name)
    

    请注意,在 Rails 3 中,您只能提供 1 个列名作为 pluck 的参数。

    分页通常求助于LIMIT,因此仍然检索所有记录的唯一方法是执行另一个查询。

    使用pluck,您只需要从数据库中检索您想要的字段,而不会像ActiveRecord 那样在您浏览所有模型的完整集合时产生开销。

    【讨论】:

    • 谢谢。实际上只是在阅读有关pluck 的信息。性能真的好很多吗?
    • 是的,您从数据库中检索的数据较少,而且您不必通过ActiveRecord,因为您直接访问数据库。 Ruby 很慢,而 SQL 不是。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-24
    • 2011-05-31
    • 2023-03-27
    • 1970-01-01
    • 2014-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多