Javascript 在Sinatra(ruby)中实现JS模糊搜索

Javascript 在Sinatra(ruby)中实现JS模糊搜索,javascript,ruby,sinatra,haml,fuzzy-search,Javascript,Ruby,Sinatra,Haml,Fuzzy Search,我试图在一个项目中使用模糊搜索,但我对JavaScript实现有点迷茫 我创建了route,所有数据均采用JSON格式: # encoding: utf-8 class Lambree < Sinatra::Base get "/json/all" do content_type :json @pre = Prescriptions.all @pre.to_json end end 这当然不行 我需要了解如何调用JS函数,因为我遗漏了很多,但不能确切地说从

我试图在一个项目中使用模糊搜索,但我对JavaScript实现有点迷茫

我创建了
route
,所有数据均采用
JSON
格式:

# encoding: utf-8
class Lambree < Sinatra::Base
  get "/json/all" do
    content_type :json
    @pre = Prescriptions.all
    @pre.to_json
  end
end
这当然不行

我需要了解如何调用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,很抱歉,下面的代码可能按原样工作,也可能不按原样工作)


你可以走了。

$.getJSON(“/json/all”)
-只需删除proto/domain。谢谢我添加了编辑文章并根据你的建议调整了代码!谢谢你的时间!当我调用JS函数
$(“#fuse”).search(…)
Safari(调试器)出现错误
TypeError:undefined不是一个函数(计算“$(“#fuse”).search”)
。请参见这里的
$
getJSON
告诉我它需要jQuery.jQuery被加载,fuse.js也被加载。奇怪的泰,我会再检查一遍。JQuery加载了两个版本:2.1.1和1.10.2。第一个是google字体所需的第二个是日期选择器所需的。如果我从
(“#fuse”)中删除
$
似乎可以正常工作。我不需要询问。但是,现在视图似乎找不到
onclick='search()'
函数。
$("#fuse").search({
  onSelect: function(text) {
    var data = $.getJSON("/json/all", {text: text})
    var f = new Fuse(data);
    var result = f.search('Falen');
  }
});
get "/json/all" do
  content_type :json
  text = params[:text]
  pre = Prescriptions.find(name: text)
  pre.to_json
end