我试图在Rails应用程序中实现JQuery UI自动完成,我已经访问了这个question,但它并没有帮助我。
我的问题是,JQuery总是显示所有的条目,无论我提供什么输入,它总是建议我每一个条目。
这是我的密码:
联署材料:
$(function() {
$( "#customer_city_input_field_" ).autocomplete({
source: '/cities.json'
});
});Rails:
# GET /cities
# GET /cities.json
def index
@cities = City.all
list = @cities.map {|u| Hash[ id: u.id, label: "#{u.postcode} #{u.name}", name: u.name, dialing_code: u.dialing_code]}
respond_to do |format|
format.html
format.json {
render json: list
}
end
end如果我访问domain.com/cities.json,就会得到以下输出:
{"id":1,“标签”:“10000城市”,“名称”:“城市”,"dialing_code":1234}
这个条目总是显示,所以自动完成工程..。有点。我还试图将源从资源更改为局部变量。
联署材料:
$(function() {
var availableCities = [{"id":1,"label":"1000 City","name":"City","dialing_code":1234}];
$( "#customer_city_input_field_" ).autocomplete({
source: availableCities
});
});因此,我所做的就是将/cities.json的输出复制到一个局部变量中,并且自动完成功能就像一个魅力一样工作。它做的正是它应该做的。如果我将源从Rails资源更改为局部变量,您知道为什么行为是不同的吗?
发布于 2016-01-10 23:29:55
查看jquery自动完成小部件上的文档,特别是“source”选项:http://api.jqueryui.com/autocomplete/#option-source
它指出:
Autocomplete插件不过滤结果,而是添加了一个查询字符串,其中添加了一个术语字段,服务器端脚本应该使用该字段来过滤结果。例如,如果源选项设置为"http://example.com“,并且用户键入foo,则会向http://example.com?term=foo发出GET请求。
这意味着你必须编辑你的索引动作。如果存在param term,则应该执行类似于@cities = City.where('name ILIKE ?', "%#{params[:term]}%")的操作。
https://stackoverflow.com/questions/34708086
复制相似问题