从Rails中将json解析为jquery ajax自动完成列表

我之前从未这样做过,我正试图为每个自动完成列表项目显示多个ldap属性。

例如,我在ldap中搜索“admin”作为sAMAccountName,我的搜索函数为每个匹配返回两个值。 sAMAccountName和idnumber,所以我的列表项必须包括sAMAccountName和idnumber。 而不仅仅是在文本字段中键入的sAMAccountName“admin”。 如何让jQuery为每个列表项读取多个属性?

def search if (params[:term] =~ /[a-zA-Z]/) @result = User.FindLdap("sAMAccountName", params[:term]) else @result = User.FindLdap("idnumber", params[:term]) end respond_to do |format| format.json { render :json=> @result.to_json } format.js end end 
 $(function() { $("#term").autocomplete({ source: function (request, response) { $.post("/users/search", request, response); }, minLength: 2, select: function () {} }); }); 

很难说出User模型中的属性是什么,但我认为它们是sAMAccountName和idnumber,所以这里是jQuery自动完成中的方法的替换

 source: function( request, response ) { $.ajax({ url: "/users/search", dataType: "json", data: { term: request.term }, success: function( data ) { // remove users in line below if JSON is not prepanded with users attribute response( $.map( data.users, function( user ) { return { // this is formated string which will be visible in autocomplete list // example "123213, admin" label: user.idnumber + ", " + user.sAMAccountName, value: user.idnumber } })); } }); }, 

上面的代码将转换(映射)从服务器到格式的响应

 [ { label: ", " , value: "" }, .....] 

不要担心jQuery自动完成知道如何处理这个数组;)