当前位置: 首页 > 面试题库 >

searchkick-具有多个属性的自动完成

裴兴言
2023-03-14
问题内容

使用此处给出的单个属性进行搜索时,自动完成功能可以正常工作。

通过->根据此,可以自动完成具有(名称,城市,国家/地区)等多个属性

def autocomplete
     Doctor.search(params[:query], autocomplete: true, limit: 10).map{|doctor| doctor.slice(:name, :city, :country) }
end

但是,这会导致自动完成下拉列表/建议显示为“未定义”。

对于提前输入,我正在使用:

<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/typeahead.js/0.9.3/typeahead.min.js"></script>

在代码中,它被引用为:

$( function () {
   $("#search").typeahead({
    name: "doctor",
    remote: "/doctors/autocomplete?query=%QUERY"
  });


});

由于返回了一组以上的数据,因此在typeahead js文件中是否需要进行某些更改?


问题答案:

您需要返回一个 hash

autocompletedoctors控制器中的操作应如下所示:

def autocomplete
  render json: Doctor.search(params[:query], autocomplete: true, limit: 10).map do |doctor| { name: doctor.name, city: doctor.city, country: doctor.country }
  end
end

添加displayKey您的预输入选项:

$( function () {
   $("#search").typeahead({
    name: "doctor",
    displayKey: 'name',
    remote: "/doctors/autocomplete?query=%QUERY"
  });
});

您也可以阅读这篇文章,看看是否有帮助。



 类似资料:
  • 问题内容: 我正在尝试为单个属性实现一个 简单的自动完成功能 。 模型: 重新索引后,在 Rails控制台 上的行为就可以了。 之后,我将自动完成操作添加到控制器,并将新路由添加到routes.rb文件。 控制器: 路线: 在这一点上,如果我只是测试以下URL: 然后我在浏览器中得到了预期的结果 : 现在添加一个搜索框。 __header.html.erb:_ 最后是Javascript: 这是使

  • 问题内容: 我有一个属性设置器,它通过获取两个字符串并对其进行哈希处理来生成唯一的ID: 我有两个问题: 是否允许(考虑良好的python编码实践)以这种方式编码 如何将两个值传递给设置器? 问题答案: 如何将两个值传递给设置器? 您可以将iterable(元组,列表)传递给setter,例如: 演示:

  • 我想知道是否有什么方法可以使属性值动态。类似于这样: 感谢您的反馈。在我的例子中,属性值是系统特定的,应该在测试运行时生成。

  • 问题内容: 我似乎找不到具有多个属性的CSS过渡 速记 的正确语法。这没有做任何事情: 我用javascript添加了show类。元素变得更高且可见,它只是不过渡。在最新的Chrome,FF和Safari中进行测试。 我究竟做错了什么? 编辑:为了清楚起见,我正在寻找简化我的CSS的简写版本。使用所有供应商前缀已经足够enough肿。还扩展了示例代码。 问题答案: 句法: 请注意,如果指定了延迟,

  • 链接href="lib/ionic/css/ionic.css"rel="样式表" 链接href="css/style.css"rel="样式表" 在HTML中应用CSS类时,如何使其自动完成? div class=“杆头杆正” 如何获得属性的自动建议(例如:-写了条后,我按下了自动建议按钮,但没有获得像条头或条脚这样的选项,但它们存在于库css中),其他一切都可以正常工作。

  • 我有个问题。您知道如何在不同的通用属性实现中使用相同的字段吗。 我有一个modelMapper接口,用于概括将要映射的对象类型 我还实现了此接口: 问题是,我需要在我的类中为每个映射设置一个字段,我认为这不是一个好的做法,我正在搜索是否有一种方法可以为所有类型的映射仅设置一个通用字段 有没有办法做到这一点?谢谢你们的帮助。