Searchkick + Bloodhound + Typeahead 用于自动完成

2024-01-07

我正在尝试实施一个简单的自动完成功能对于单个属性。

Model:

searchkick text_start: [:name],autocomplete: ['name']

重新索引行为后Rails 控制台没问题.

2.2.0-p0 :002 >Doctor.search("a", autocomplete: true).map(&:name) 
gives the output-
 => ["a", "aa", "aaa", "aaaa"] 

之后,我将自动完成操作添加到控制器,并将新路由添加到routes.rb 文件。

控制器:

def autocomplete
    console.log("In auto")
    render json: Doctor.search(params[:query], autocomplete: false, limit: 10).map(&:name)
  end

Routes:

resources :doctors do
    collection do
      get :autocomplete
    end
  end

此时如果我简单地测试以下 URL:

http://localhost:3000/doctors/autocomplete?query="a"

然后我在浏览器中得到预期的结果:

["a", "aa", "aaa", "aaaa"] 

现在添加一个搜索框。

_header.html.erb:

  <%= form_tag doctors_path, method: :get do %>
    <div class="form-group">
      <%= text_field_tag :query, params[:query], class: 'form-control typeahead', autocomplete: "off" %>
      <%= submit_tag 'Search', class: 'btn btn-primary' %>
    </div>
  <% end %>

最后是 JavaScript:

var ready;
ready = function() {
    var numbers = new Bloodhound({
      remote: {url: "/doctors/autocomplete?query=%QUERY"},
      datumTokenizer: function(d) { 
              return Bloodhound.tokenizers.whitespace(d.name); },
      queryTokenizer: Bloodhound.tokenizers.whitespace


});

// initialize the bloodhound suggestion engine

var promise = numbers.initialize();

promise
.done(function() { console.log('success!'); })
.fail(function() { console.log('err!'); });

// instantiate the typeahead UI
$( '.typeahead').typeahead(null, {
  displayKey: 'name',
  source: numbers.ttAdapter()
});
}

$(document).ready(ready);
$(document).on('page:load', ready);

这是使用的脚本标签:

<script type="text/javascript" src="https://twitter.github.io/typeahead.js/releases/latest/typeahead.bundle.js"></script>

输入任何内容时搜索框都没有显示任何响应,Google Chrome 的控制台上也没有显示错误。


您需要返回哈希值以响应自动完成操作:

def autocomplete
  render json: Doctor.search(params[:query], autocomplete: true, limit: 10).map {|doctor| {name: doctor.name, value: doctor.id}}
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Searchkick + Bloodhound + Typeahead 用于自动完成 的相关文章

  • 在rails生成脚手架中跳过JSON格式

    当您使用类似命令生成 Rails 脚手架时rails g scaffold Thing有什么办法可以避免变得烦人吗 respond to do format format html index html erb format json re
  • rspec 中的模拟方法链

    有一系列方法可以获得user目的 我试图模拟以下内容以返回user in my Factory Girl current user AuthorizeApiRequest call request headers result 我可以模拟该
  • Ruby on Rails Webpacker 找不到 asset_pack_path 下的图像

    我在使用 Ruby on Rails Webpacker 在视图中包含图像时遇到问题 当我尝试使用 html img 标签和 asset pack path 在我的视图中插入图像时 出现错误 我的图像位于app javascript ima
  • 创建费用前验证 CVC 代码

    我正在尝试检查用户输入的 cvc 代码 我已经存储了条带 customer id 和条带 card id 我想在向用户收费之前验证 CVC 代码 以下是创建费用的代码 charge Stripe Charge create amount g
  • ruby 管道、IO 和 stderr 重定向

    我希望有一个 ruby 程序 一个 rake 任务 观察另一个 rake 任务的输出 输出写入器输出到 stderr 我想读一下这些行 我很难设置它 如果我有一个作家 stdout writer rb 不断打印一些东西 usr bin en
  • 在 postgresql 中查找和汇总具有重叠记录的日期范围

    我有一个大型数据集 我想对记录具有重叠时间的计数进行求和 例如 给定数据 id 1 name A start 2018 12 10 00 00 00 end 2018 12 20 00 00 00 count 34 id 2 name B
  • 有没有办法避免自动更新 Rails 时间戳字段?

    如果您有数据库列created at and updated at当您创建和更新模型对象时 Rails 将自动设置这些值 有没有办法在不接触这些列的情况下保存模型 我正在引入一些旧数据 我想根据 不同名称的 旧数据字段中的相应值设置这些值
  • URL 路由中的点与命名空间 Rails 3.1

    我有这个路线 rb root to gt posts index devise for users controllers gt omniauth callbacks gt users omniauth callbacks resource
  • Capistrano:deploy.rb 文件重构

    我的deploy rb中有以下代码 namespace app do desc copies the configuration frile from shared config yml to config task copy config
  • Rails 3 best_in_place 编辑在不刷新页面的情况下无法工作

    我从Bernat的博客rails迷你教程中获取了评论代码 我尝试使用他的 best in place gem 添加就地编辑功能 在大多数情况下它工作正常 我的代码部署在http falling spring 3964 herokuapp c
  • 如果使用 jQuery 添加字段,Rails 嵌套表单属性不会保存

    我有一个带有嵌套表单的 Rails 表单 我使用 Ryan Bates 嵌套表单和 jquery 教程 并且就动态添加新字段而言 它工作得很好 但是当我提交表单时 它不会保存任何关联的属性 但是 如果在表单加载时构建部分 则它会很好地创建属
  • 为什么 Rails 应用程序在底部显示数据库信息?

    我创建了一个博客 每当我添加帖子时 帖子索引页面底部总会显示数据库中的记录列表 home html erb 像这样
  • Rails 3 分页,will_paginate 与 Kaminari

    我的设置 Rails 3 0 9 Ruby 1 9 2 我正在为我的应用程序寻找分页解决方案 发现有一个新的宝石Kaminari与值得信赖的人相比will paginate 看起来像will paginate有一段时间没有更新了 但后来又以
  • 使用正则表达式、kibana 搜索数组中的元素

    我正在搜索包含数组字段的记录payload params 我想显示包含该字符串的所有字段aabb 例子 payload params 3raabb 44aabb66 grgeg 展示 3raabb 44aabb66 如何在数组上使用正则表达
  • 如何为单集群(独立集群)ElasticSearch 配置单节点

    我在本地计算机上安装了elasticsearch 我想将其配置为集群中唯一的一个节点 独立服务器 这意味着每当我创建新索引时 它只能用于我的服务器 它将无法被其他人的服务器访问 我当前的情况是 这些索引可供其他服务器使用 这些服务器形成在集
  • <%=h ... %> 在 Rails 中意味着什么?

    I found here http api rubyonrails org classes ActionView Helpers RecordTagHelper html以下语法 什么是h means 它用于转义标签的输出以避免跨站点脚本
  • Rails HABTM 设置、模型对象和 join_table 插入控制器设置

    我有以下设置 1 个产品有多个 Product types 许多 Product types 有 1 种类型 根据我对文档的理解 HABTM 关系 我的模型是 class Product lt ApplicationRecord has a
  • Gem 在 irb 中可用,但在 Rails 控制台中不可用

    我正在尝试在我的 Rails 项目中使用 RedCloth gem 当我使用irb我可以加载宝石 require rubygems require RedCloth 它工作正常 但是当我在 Rails 控制台中尝试相同的操作时 我收到一条错
  • 子域中的 Rails url 助手 - 删除子域

    我网站上的用户可以拥有子域 例如 他们的页面网址是 name example com 登录的用户可以查看更多用户信息 因此在用户的显示页面上 我有一个使用以下代码生成的链接 user url user subdomain gt false
  • 如何让 Sidekiq 在 Heroku 上运行?

    这是我第一次尝试让 Redis 在 Heroku 上运行 我添加了一个工作dyno 就在今天 所以还没有付款 添加了RedisToGo Nano附加组件 在我的本地机器上测试了后台作业 并将应用程序推送到heroku heroku ps g

随机推荐

  • Libgdx box2D 中的碰撞对于某些物体失败

    我正在使用 libgdx 和 box2d 开发我的第一个游戏 我正在使用调试渲染器来测试我的对象 我创建了一些类似汽车的物体 每辆车都有一个主体 它是一个6点的大多边形 长约1米 高0 7米 并有2个通过旋转关节连接的车轮 主车还通过旋转接
  • GDI+ LockBits()/UnLockBits() 异常

    我的程序是用 C 编写的 并在低级别上使用位图进行操作 一切工作正常 但有时 非常罕见 但稳定 会发生异常 通用 GDI 异常 并且很难重现这种情况 函数 LockBits 和 UnLockBits 发生异常 它包含错误代码 2147467
  • 如何在 QML 中捕获信号?

    如何将信号从一个 qml 组件发送到另一个 下面是一个例子 Rectangle id main width 360 height 360 signal clicked Text id testStr anchors centerIn par
  • Ingress 不转发请求 - 适用于 Windows 和 kubernetes 的 Docker 桌面

    EDIT 我删除了 minikube 在 Windows 的 Docker 桌面中启用了 kubernetes 并安装ingress nginx手动 helm upgrade install ingress nginx ingress ng
  • 使用powershell和svn删除未版本控制的文件

    我正在尝试编写一个构建脚本来使用 Powershell 签出代码 我需要能够使用 SVN 存储库中的适当更改来替换对工作副本所做的任何修改 这还包括删除在存储库中删除但未在工作副本中删除的所有文件 不幸的是 我无法进行干净的签出 因为每次运
  • Xdebug 3 docker mac PhpStorm 损坏的管道

    I see There was a problem sending 179 bytes on socket 11 Broken pipe 在 xdebug log 中看不到原因 这几天一直在兜圈子 尝试各种东西 我究竟做错了什么 X调试3
  • HTML 中的绝对路径不起作用

    我正在尝试使用小型 JavaScript 代码构建 HTML 模板 这是内容 在根目录下 我构建了两个文件 索引 html
  • 检查密码强度的最佳方法是什么?

    确保用户提供的密码是注册或更改密码表单中的强密码的最佳方法是什么 我的一个想法 用Python def validate password passwd conditions met 0 conditions total 3 if len
  • PK在深色模式和浅色模式下绘制不同的结果

    使用时PKDrawing在暗模式下生成的图像图像来自矩形 比例 https developer apple com documentation pencilkit pkdrawing 3237277 imagefromrect返回白色的钢笔
  • WPF 异步任务 阻塞 UI

    我已经与Task类型 一切都很好Task什么也不返回 例如 XAML
  • Python、Windows 和多重处理

    我有一个最初在 Linux 上构建的 Python 程序 现在我正尝试将其移植到 Windows 我在包含所有依赖项的虚拟环境中运行该程序 我的程序使用 pip install find linkswheelsmy module 作为轮子安
  • 为什么这个普通的 js 函数在 d3v3 和 d3v4 中返回不同的结果

    这是一个基于一些从令人惊叹的 d3 js v3 到 v4 的模板的 MWE 数据位于 csv 文件中 两个示例都加载相同的文件 干净 day movie1 movie2 movie3 movie4 movie5 movie6 1 20 8
  • 识别发生特定模式变化的行

    简介 背景 我需要分析 spss 数据表中的受访者数据 但我认为最好将这些数据复制到 Excel 或 Google 表格中 以进行我即将描述的特定分析 600 多名参与者被要求回答 100 个问题 每个参与者在数据中都有自己的行 他们对问题
  • 为什么我会收到“拆分包”警告?

    我正在构建一个 kar 文件 但是当我运行时mvn package我收到此错误 INFO maven bundle plugin 2 4 0 bundle default bundle common WARNING Bundle se em
  • 如何重命名物理数据库文件

    我使用 tsql 来分离数据库 如下所示 EXEC sp detach db dbname my db 然后我使用 PHP 来重命名物理文件 我能够重命名 mdf 文件 但不能重命名 ldf 文件 我什至尝试过dos命令REN但这对于 ld
  • R Shiny - 错误:没有名为“shinyjs”的包

    当我在本地运行我的应用程序时 它运行得很好 但是当我将它托管在闪亮应用程序io出现这个错误 发生了错误 应用程序无法启动 value 3L 中的错误 没有名为 shinyjs 的包 调用 本地 tryCatch gt tryCatchLis
  • 如何在巨大的 XML 文件中进行命令行 XPath 查询?

    我有一个 XML 文件集合 其中一些文件非常大 最多约 5000 万个元素节点 我在用xmllint用于验证这些文件 由于流 API 即使对于巨大的文件 它也能很好地工作 xmllint loaddtd stream valid path
  • distanceFromLocation 方法如何工作?

    我经常使用distanceFromLocation方法用于CLLocation对象来获取与其他位置的距离 枚举 CLLocations 数组 然后使用此方法将每个位置与我的参考位置进行比较 我很想知道使用的处理 内存影响distanceFr
  • Makefile 中的通配符目标

    如何压缩以下 Makefile 目标 GRAPHDIR Complex png GRAPHDIR Complex dot dot GRAPHDIR Complex dot Tpng o GRAPHDIR Complex png GRAPHD
  • Searchkick + Bloodhound + Typeahead 用于自动完成

    我正在尝试实施一个简单的自动完成功能对于单个属性 Model searchkick text start name autocomplete name 重新索引行为后Rails 控制台没问题 2 2 0 p0 002 gt Doctor s