Javascript 在Sinatra(ruby)中实现JS模糊搜索
我试图在一个项目中使用模糊搜索,但我对JavaScript实现有点迷茫 我创建了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函数,因为我遗漏了很多,但不能确切地说从
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