在Sinatra(ruby)中实现JS模糊搜索
Implementing JS fuzzy search in Sinatra (ruby)
我正在尝试使用fuse.js在Sinatra项目中进行模糊搜索,但我对JavaScript实现有点迷茫。
我用JSON
格式的所有数据创建了route
:
# encoding: utf-8
class Lambree < Sinatra::Base
get "/json/all" do
content_type :json
@pre = Prescriptions.all
@pre.to_json
end
end
然后我加载了fuse.js
并在layout.haml
中添加了一个函数:
:javascript
$(function() {
$( "#fuse" ).search( {
onSelect: function(text) {
var data = $.getJSON("/json/all")
var f = new Fuse(data);
var result = f.search('Falen');
}
}
);
});
%label{:for => "search"} Ψάξε:
%input#search/
%button#but{:onclick => "search()"} Search
这当然是行不通的。
我需要了解如何调用 JS 函数,因为我错过了很多,但无法确切地说出从哪里开始!任何带有一些代码和分步说明的示例都将非常受欢迎!
谢谢
现在回答真正的问题。您需要将搜索文本传递给您的 ruby 代码。
$("#fuse").search({
onSelect: function(text) {
var data = $.getJSON("/json/all", {text: text})
var f = new Fuse(data);
var result = f.search('Falen');
}
});
之后,在您的方法中获取它(我不记得如何使用sinatra,抱歉,以下代码可能会也可能不会按原样工作)。
get "/json/all" do
content_type :json
text = params[:text]
pre = Prescriptions.find(name: text)
pre.to_json
end
你很好去。
相关文章:
- Node.js使用Series函数(模式?)实现流控制时出现意外结果
- Chart.js-添加渐变而不是纯色-实现解决方案
- Ember.js-如何使用Ember.Router实现所选项目
- 如何在js中实现树结构类型的表单动态填充
- 如何在外部js文件中实现谷歌地图api3
- 在HTML中实现JS
- HTML中两种JS实现之间的差异
- 如何在three.js中实现不同相机/场景之间的交叉渐变
- Vue.js如何在定义API变量之前实现自定义过滤器
- 在 php 代码中实现倒计时 js 倒计时
- 在Sinatra(ruby)中实现JS模糊搜索
- 在node.js中实现Restful api
- 使用 JavaScript/Node.js 实现插件架构
- 在 IOS 中实现 JS 功能
- 从服务器接收并以chrome扩展实现.js文件
- 如何在Angular 2组件中实现js函数
- 现代浏览器是如何实现JS数组的,特别是添加元素
- 尝试实现 js textualizer
- 使用一个接受两个参数的函数实现 JS 本机“filter”方法
- 用extjs实现js的基本功能