【发布时间】:2014-08-13 15:43:32
【问题描述】:
我需要将组添加到 rails 中已创建的自动完成下拉列表。我不知道从哪里开始,我什至不确定称它为“组”是否合适,但我必须看起来像我发布的图片。如果有人至少可以为我指明正确的开始方向,我将不胜感激。
【问题讨论】:
标签: jquery ruby-on-rails autocomplete
我需要将组添加到 rails 中已创建的自动完成下拉列表。我不知道从哪里开始,我什至不确定称它为“组”是否合适,但我必须看起来像我发布的图片。如果有人至少可以为我指明正确的开始方向,我将不胜感激。
【问题讨论】:
标签: jquery ruby-on-rails autocomplete
我认为,您可以为类型(名词和动词)的句子添加一个枚举字段,或者如果句子可能同时具有这两种类型,则可以为类型添加一个模型。
之后,您可以分别选择名词和动词,并生成一个类似{ nouns: array_of_nouns, verbs: array_of_verbs } 的哈希并将其发送到您的 JavaScript,您可以在其中在两个单独的数组中进行搜索。
您还可以使用散列代替数组并按首字母分组句子以加快搜索速度。例如,如果您有“名词”r、react、ruby、ruby-on-rails 和 javascript,则您的 hash_of_nouns 将类似于 { 'j' => [ 'javascript' ], 'r' => ['ruby', 'react', 'ruby-on-rails', 'r'] }。在用户输入的第一个字符之后,您可以获取数组并在其中搜索。处理大量数据会比简单的array_of_nouns 快得多。
【讨论】:
这个解决方案对我有用:
#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 指南。
【讨论】: