【问题标题】:Adding groups to autocomplete将组添加到自动完成
【发布时间】:2014-08-13 15:43:32
【问题描述】:

我需要将组添加到 rails 中已创建的自动完成下拉列表。我不知道从哪里开始,我什至不确定称它为“组”是否合适,但我必须看起来像我发布的图片。如果有人至少可以为我指明正确的开始方向,我将不胜感激。

http://imgur.com/XLYzeKa

【问题讨论】:

    标签: jquery ruby-on-rails autocomplete


    【解决方案1】:

    我认为,您可以为类型(名词和动词)的句子添加一个枚举字段,或者如果句子可能同时具有这两种类型,则可以为类型添加一个模型。

    之后,您可以分别选择名词和动词,并生成一个类似{ nouns: array_of_nouns, verbs: array_of_verbs } 的哈希并将其发送到您的 JavaScript,您可以在其中在两个单独的数组中进行搜索。

    您还可以使用散列代替数组并按首字母分组句子以加快搜索速度。例如,如果您有“名词”rreactrubyruby-on-railsjavascript,则您的 hash_of_nouns 将类似于 { 'j' => [ 'javascript' ], 'r' => ['ruby', 'react', 'ruby-on-rails', 'r'] }。在用户输入的第一个字符之后,您可以获取数组并在其中搜索。处理大量数据会比简单的array_of_nouns 快得多。

    【讨论】:

    【解决方案2】:

    这个解决方案对我有用:

    • 要解决自动完成查询中区分大小写的问题,请创建要应用自动完成的字段名索引(以便以二进制形式查询):

    #db/migrate/...AddIndexFieldnameToTablename

    def change
      add_index :tablename, :fieldname
    end
    
    • 要解决分组值,请使用 范围

    #app/controller/yourtablenames_controller.rb

    autocomplete :tablename, :fieldname, scopes: [:scope_rule_name]
    

    #app/model/yourtablename.rb

    scope :scope_rule_name, -> {group :fieldname}
    

    关于如何为 rails4 应用自动完成功能,我遵循了 this 指南。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-20
      • 1970-01-01
      • 1970-01-01
      • 2012-05-12
      • 1970-01-01
      • 2014-02-08
      相关资源
      最近更新 更多