设计问题Active Record Search与Javascript Search

时间:2011-05-24 23:59:18

标签: javascript jquery ruby-on-rails search activerecord

我在表格中有300条记录,其中包括以下内容:姓名,地址,城市,州和邮政编码。

  1. 当用户访问我的应用程序时,我想要提取所有300条记录,可能是JSON格式(但不一定,可能是数组或ruby对象),隐藏在视线之外,但在客户端。
  2. 我想在客户端搜索这些记录
  3. 是否存在任何简单的Javascript / JQuery库,我可以搜索客户端数据并只显示匹配结果。这种方法我应该考虑哪些缺点?

    功能:用户访问应用,用户看到搜索栏,用户在“Toledo”中输入,应用返回2个匹配的托莱多记录。

2 个答案:

答案 0 :(得分:1)

非常直截了当。除了在找到结果后进行DOM操作外,不确定您需要一个库。

function searchArrayFields(search, objectArray)
{
     var results = [];
     for (var i=0; i < objectArray.length; i++)
     {
        for (var key in objectArray[i])
        {
            if (objectArray[i][key].indexOf(search) > -1)
            {
                results.push(objectArray[i]);
                break;
            }
        }
     }
     return results;
}

这也是一些dom的例子。

function buildAddress(row)
{
   var retVal = '<div class="container"><div class="name">'+row.name + '</div>';
   retVal += '<div class="address-line-1">'+ row.address+'</div>';
   retVal += '<div class="address-line-2"><span class="city">'+ row.city+'</span>';
   retVal += ' <span class="state">'+ row.state+'</span>';
   retVal += ', <span class="zip">'+row.zip+'</span></div></div>';
   return retVal;
}
function displayAddresses(search)
{
   var rows = searchArrayFields(search, global_db);
   var retVal = [];
   for (var i=0; i < rows.length; i++)
   {
       retVal.push(buildAddresses(rows[i]));
   }
   $('#target').html(retVal.join(''));
}

假设您的数据存储如下,这将是标准的JSON设置:

[{name:'John Doe', address:'111 Main Street', city:'Toledo', state:'OH',zip:44343}];

答案 1 :(得分:0)

也许jQuery autocomplete plugin适用于这种情况