Вопрос о дизайне Active Record Search против Javascript Search - PullRequest
2 голосов
/ 25 мая 2011

У меня есть 300 записей в таблице, которые включают следующее: имя, адрес, город, штат и почтовый индекс.

  1. Я хочу получить все 300 записей один раз, когда пользователь обращается к моему приложению, возможно, в формате JSON (но не обязательно, это может быть массив или объект ruby), скрытый из поля зрения, но насторона клиента.
  2. Я хочу найти эти записи на стороне клиента

Существуют ли простые библиотеки Javascript / JQuery, в которых я мог бы искать данные на стороне клиента и просто отображать результат сопоставления.Есть ли какие-либо недостатки, которые я должен учитывать при таком подходе?

Добавление: приложение посещений пользователя, пользователь видит панель поиска, типы пользователей в "Толедо" и приложение возвращает 2 соответствующих записи толедо.

Ответы [ 2 ]

1 голос
/ 25 мая 2011

Это довольно просто. Не уверен, для чего вам нужна библиотека, кроме как для выполнения 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;
}

Вот еще несколько примеров с домом.

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}];
0 голосов
/ 25 мая 2011

Возможно, плагин jQuery для автозаполнения хорошо подойдет для этой ситуации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...