【发布时间】:2009-11-24 08:11:51
【问题描述】:
现在我的自动完成数据保存在我的服务器上,它使用 LIKE 查询来查找匹配项。具体来说,我正在获取“q”参数的值,将其拆分为空格,并寻找匹配每个单词的Songs:(使用 SearchLogic)
@songs = Song.sortable_name_like_all(params[:q].to_s.split)
由于我的歌曲不多,我认为如果我一次将所有歌曲发送到客户端,然后根据客户端数据自动完成,用户体验可能会更好。
我的服务器现在返回一个 JSON 数组 onready,如下所示:
[{"path":"/lyrics/Young-jeezy-ft-jay-z/Go-crazy-remix","song":"Young Jeezy (Ft. Jay-Z) - Go Crazy (Remix) "},{"path":"/lyrics/Young-jeezy-ft-jay-z/Put-on","song":"Young Jeezy (Ft. Jay-Z) - 穿上"}]
我的自动完成看起来像这样:
$("input.quick_search").autocomplete(data, {
formatItem: function(item) {
return item.song;
},
formatResult: function(item) {
return "Loading...";
}
}).result(function(event, choice, formatted) {
if (choice) {
window.location.href = choice.path;
}
}).click(function() { this.select(); });
但现在自动完成使用精确的字符串匹配,这意味着“young on”不会匹配“Young Jeezy (Ft. Jay-Z) - Put On”。
如何在这里使用 LIKE 匹配?
【问题讨论】:
标签: jquery ruby-on-rails autocomplete