我正在尝试在fuse.js项目中使用Sinatra进行模糊搜索,但我在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
然后我加载了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函数,因为我错过了很多但却无法准确说明从哪里开始!任何带有一些代码和一步一步解释的例子都会受到欢迎!
由于
答案 0 :(得分:1)
现在回答真正的问题。您需要将搜索文本传递给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
你很高兴。